/work и /backups
2. Папку /work надо заархивировать и с именем work-<дата>.tar.gz уложить в /backups. В папке /backups должно храниться 5 копий, лишнюю самую старую копию надо стереть после удачной заливки
3. Забрать содержимое из репы и положить в /work
Вопрос по второму пункту: как то нативно можно количество регулировать или колхозить свой алгоритм?
а это как будет? ansible в крон?
Есть же утилиты для бэкапов специальные? Ну или написать скрипт на баше/питоне/чем умеете и запускать его по крону/systemd-timers. И раскатывать его ансиблом?
Зачем крон? Вышла новая версия софта, запускаю плейбуку, она отрабатывает
Обычными средствами я могу решить задачу и через линуксовый logrotate. Просто хотел нативно ансиблом задачу разруливать
А, не по расписанию. Ну я по памяти не уверен, что есть ротейт. Тогда find, register, и удаление в лупе могу предложить
Звучит как задача для ChatGPT: --- - hosts: your_target_host vars: backup_path: /backups work_path: /work tasks: - name: Archive /work directory ansible.builtin.archive: path: '{{ work_path }}' dest: '{{ backup_path }}/work-{{ ansible_date_time.date }}.tar.gz' format: gz - name: Find all backup files ansible.builtin.find: paths: '{{ backup_path }}' patterns: work-*.tar.gz use_regex: true register: backup_files - name: Sort backup files by age set_fact: sorted_backup_files: >- {{ backup_files.files | sort(attribute='ctime', reverse=true) }} - name: Remove the oldest backup if there are more than 5 ansible.builtin.file: path: '{{ backup_item.path }}' state: absent loop: '{{ sorted_backup_files[5:] }}' loop_control: loop_var: backup_item when: sorted_backup_files | length > 5 - name: Clear /work directory before cloning ansible.builtin.file: path: '{{ work_path }}' state: absent - name: Clone repo into /work ansible.builtin.git: repo: your_repo_url dest: '{{ work_path }}'
Спасибо большое. Я как то так и планировал делать. Просто думал, может есть какой-нибудь модуль типа retention-files или rotate-files
Есть deploy_helper модуль с похожим функционалом: https://docs.ansible.com/ansible/latest/collections/community/general/deploy_helper_module.html
УУУУХ ТЫ! Я до такого модуля еще не дошел в изучении. Спасибо, буду изучать
заюзать любую систему бекапов, там такое из коробки
Я стараюсь придерживаться принципа KISS. Если есть 1-2 команды ансибла, зачем городить лишний софт и создавать дополнительную точку отказа?
нету, придется на bash велосипеды строить
1. Там чуть выше уже код скинули на ансибле, чтобы без баша обойтись 2. Скорее всего эти задачи решает deploy_helper. Сейчас буду макетировать
Обсуждают сегодня