
Ансиблькажется довольно эффективным средством автоматизации для развертывания и обновления приложений на серверах.
Можно ли использовать его для резервного копирования (Linux) сервера? Является ли это хорошей практикой?
Если да, есть ли какой-либо модуль/пример, как это сделать? Например, предположим, я хочу создать экспорт базы данных и скопировать ее на другую машину, как автоматизировать эту задачу с помощью Ansible?
решение1
Можно сделать резервную копию сервера с помощью Ansible. Я новый пользователь Ansible, поэтому не уверен, хорошая ли это практика или нет.
Если вы хотите сделать резервную копию баз данных, вы можете использоватьmysql_dbмодуль.
tasks:
- name: backup db server
mysql_db: name={{item}} state=dump target=/{{item}}-{{ansible_date_time.iso8601}}.sql
with_items: db_name
затем вы можете использовать fetch или synchronizeмодульдля передачи этих файлов на локальную машину. С fetch
модулем невозможно загрузить несколько файлов, так как он не поддерживает подстановочные знаки и загрузку папок. Создание одного файла tar является вариантом решения этой проблемы.
Вы также можете использовать его scp
для загрузки файлов резервных копий с удаленного экземпляра.
- name: Downloading backup files from remote machine
command: scp -i {{ansible_ssh_private_key_file}} {{remote_user}}@{{host}}:/backup/* {{backup_folder}}
delegate_to: 127.0.0.1
решение2
Отвечая на свой собственный вопрос, я нашел модуль fetch, который позволяет загружать файлы с удаленного сервера:http://docs.ansible.com/ansible/fetch_module.html