====== 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 Первая команда интерактивна, во второй файл с паролем должен содержать ровно **одну** строчку.