Использование переменных в Ansible
Development | Комментировать запись
Ansible – это современный инструмент управления конфигурацией. Для связи и выполнения команд на управляемых серверах (нодах) он использует только SSH и Python – то есть вам не нужно устанавливать агентское программное обеспечение на удаленные ноды. В этой серии мануалов вы познакомитесь с основными функциями Ansible, которые можно использовать для написания сценариев автоматизации серверов. В конце серии вы найдете практический пример плейбука для автоматизации настройки удаленного веб-сервера Nginx и развертывания на нем статического HTML-сайта.
Примечание: Это третья часть серии по работе с Ansible. Другие мануалы из этой серии вы найдете по тегу ansible-practice. Весь код можно найти в этом репозитории.
Для более тонкой настройки выполнения задач и сценариев Ansible поддерживает переменные. Благодаря переменным можно использовать один и тот же плейбук с разными целями и в разных средах.
Переменные могут поступать из разных источников: это может быть как сам плейбук, так и внешние файлы переменных, которые импортируются в плейбук. Если в разных источниках есть переменная с одним и тем же именем, применяются особые правила приоритета.
Чтобы на практике увидеть, как работают переменные, мы создадим новый тестовый плейбук, который будет выводить значения двух переменных: username и home_dir. Создайте новый файл playbook-02.yml в каталоге ansible-practice:
nano ~/ansible-practice/playbook-02.yml
Затем добавьте в новый плейбук следующие строки:
--- - hosts: all vars: - username: 8host - home: /home/8host tasks: - name: print variables debug: msg: "Username: {{ username }}, Home dir: {{ home }}"
Сохраните и закройте файл, когда закончите редактирование.
Раздел vars в нашем плейбуке определяет список переменных, которые будут использоваться в рамках заданного плея. Все задачи, а также любой файл или шаблон, который может быть включен в данный плейбук, будут иметь доступ к этим переменным.
Чтобы опробовать этот плейбук на серверах из вашего инвентаря файла, запустите команду ansible-playbook с теми же аргументами подключения, которые вы использовали ранее (при запуске первого примера из предыдущих мануалов). Мы снова будем использовать файл инвентаря по имени inventory и пользователя 8host для подключения к удаленным серверам. Наша команда будет выглядеть так:
ansible-playbook -i inventory playbook-02.yml -u 8host
Вы увидите такой результат:
PLAY [all] *********************************************************************************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************************************************************************** ok: [203.0.113.10] TASK [print variables] *********************************************************************************************************************************************************************** ok: [203.0.113.10] => { "msg": "Username: 8host, Home dir: /home/8host" } PLAY RECAP *********************************************************************************************************************************************************************************** 203.0.113.10 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Задача print variables будет использовать модуль отладки debug для вывода значений двух переменных, которые мы определили в разделе vars нашего плейбука.
Tags: Ansible, ansible-practice