Назначение переменных группам
Ansible позволяет назначать переменные группам в файле инвентаря. Эти переменные могут быть использованы в плейбуках и шаблонах, делая ваш код Ansible более гибким и повторно используемым.
Отредактируйте файл inventory:
nano /home/labex/project/inventory
Обновите содержимое до следующего:
[webservers]
localhost ansible_connection=local
[production:children]
webservers
[webservers:vars]
http_port=80
Это назначает переменную http_port со значением 80 всем хостам в группе webservers. Суффикс :vars используется для определения переменных для группы.
Сохраните изменения и выйдите из редактора.
Теперь давайте создадим простой плейбук для отображения этой переменной. Плейбук - это файл в формате YAML, который определяет набор задач для выполнения на хостах. Создайте новый файл с именем show_http_port.yml:
nano /home/labex/project/show_http_port.yml
Добавьте следующее содержимое:
---
- name: Show HTTP Port
hosts: webservers
tasks:
- name: Display HTTP Port
debug:
msg: "The HTTP port is {{ http_port }}"
Этот плейбук:
- Целеуказывает на группу
webservers
- Имеет одну задачу, которая использует модуль
debug для отображения сообщения
- Использует синтаксис
{{ http_port }} для ссылки на переменную, которую мы определили в инвентаре
Сохраните изменения и выйдите из редактора.
Запустите плейбук:
ansible-playbook -i inventory show_http_port.yml
Вы должны увидеть вывод, отображающий значение порта HTTP:
PLAY [Show HTTP Port] ********************************************************
TASK [Gathering Facts] ********************************************************
ok: [localhost]
TASK [Display HTTP Port] ******************************************************
ok: [localhost] => {
"msg": "The HTTP port is 80"
}
PLAY RECAP ********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Это показывает, что переменная, которую мы определили в инвентаре, доступна в нашем плейбуке.