--- - name: Backup Protocol hosts: all become: true become_method: sudo collections: - community.docker - community.general vars: env_backups_to_keep: 10 tasks: - name: Run container mounts backup ansible.builtin.import_role: name: docker_backup vars: backup_rules: "{{ item }}" when: docker_backup is defined and docker_backup | length != 0 loop: "{{ docker_backup }}" - name: Stat the /root/infrastructure-compose folder ansible.builtin.stat: path: "/root/infrastructure-compose" register: infra_compose_stat - name: Find all .env files ansible.builtin.find: paths: "/root/infrastructure-compose" patterns: ".*.env" when: infra_compose_stat.stat.exists register: all_env_files - name: .env Backup block when: infra_compose_stat.stat.exists and all_env_files.files is defined and all_env_files.files | length != 0 block: - name: Archive .env files community.general.archive: path: "{{ all_env_files.files }}" dest: >- /backup/env/{{ inventory_hostname }}_{{ now().strftime("%Y%m%d%H%M%S") }}.tar.gz format: gz force_archive: true - name: Find all .env backup files for the current host ansible.builtin.find: paths: "/backup/env" patterns: "{{ inventory_hostname }}*" register: backup_env_files - name: If too many backups kept when: backup_env_files.files | length > env_backups_to_keep block: - name: Get the oldest file paths ansible.builtin.set_fact: oldest_file_paths: >- {{ (backup_env_files.files | sort(attribute='mtime'))[:backup_env_files.files | length - env_backups_to_keep] | map(attribute=path) | list }} - name: Remove the files ansible.builtin.file: path: "{{ item }}" state: absent loop: "{{ oldest_file_paths }}"