====== Ansible ======
===== Предисловие =====
Ansible - это система управления конфигурациями, написанная на python. От клиентов требуется только установленный python и работающий ssh-сервер.
Требуемая конфигурация системы описывается с помощью yml-файлов.
===== Структура проекта =====
Важно изначально правильно структурировать данные
ansible/
group_vars/
freebsd/
docker/
linux/
host_vars/
alpine/
template0/
===== Структура файла =====
===== Модуль command =====
Выполняет команду со списком аргументов. Не подхватывает переменные окружения. Если задан параметр **creates**, то команда выполняется, если указанный в ней //файл не существует//. Параметр **removes**, наоборот, инициирует выполнение команды, если //файл существует//.
- name: Execute command if mydir/file_name doesn't exists
command: command arg1 arg2
args:
chdir: mydir/
creates: file_name
===== Модуль shell =====
Выполняет команду со списком аргументов. В отличие от command, выполнение производится через shell, то есть команда может использовать переменные среды. Параметр executable меняет shell-оболочку на заданную.
- name: Csh executes command if mydir/file_name doesn't exists
shell: script.sh arg1 arg2
args:
chdir: mydir/
creates: file_name
warn: False
executable: /bin/csh
===== Модуль stat =====
===== Модуль debug =====
===== Vault =====
==== Создание, редактирование и просмотр шифрованного файла ====
Для создания используется команда
# ansible-vault create имя_файла
, для редактирования -
# ansible-vault edit имя_файла
, для просмотра -
# ansible-vault view имя_файла
Для шифрования готового файла используем команду
# ansible-vault encrypt имя_файла
==== Использование в сценариях ====
Если плэйбук содержит шифрованные данные, то используем одну из команд:
# ansible-playbook book.yml --ask-vault-pass
или
# ansible-playbook book.yml --vault-password-file password.txt
Первая команда интерактивна, во второй файл с паролем должен содержать ровно **одну** строчку.