Использование переменных в Ansible

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: ,

Добавить комментарий