Одну переменную можно задать в нескольких местах. Какое значение получит шаблон, решает порядок.
Переменные машин и групп кладут в каталоги рядом с инвентарём: group_vars/web.yml — для всех машин группы web, host_vars/app1.yml — для одной машины app1. Ansible читает эти файлы сам, плейбук их не называет. Что машина получила из инвентаря и этих каталогов, показывает ansible-inventory --host app1.
Если переменная задана в нескольких местах, значение берётся из того, что ниже в таблице: каждая строка перекрывает строки выше.
| Где задано | Для кого |
|---|---|
defaults/main.yml роли |
все плеи с этой ролью |
group_vars/<группа>.yml |
машины группы |
host_vars/<машина>.yml |
одна машина |
vars плея |
задачи этого плея |
-e имя=значение |
один прогон |
-e сильнее всех, но действует только в своём прогоне: следующий прогон без него вернёт прежнее значение. Мест для переменных больше, полный порядок — в Вики.
Дай docs свой телефон
В ~/ansible-lab у трёх сайтов общий телефон группы web из group_vars/web.yml. Коллега хотел дать docs свою линию 8-800-555-04-04 и записал её в host_vars/app1.yml — теперь этот номер на всех трёх сайтах. Сделай так, чтобы docs показывал 8-800-555-04-04, а shop и blog — телефон группы. Прогони все три плейбука.
Цели · 0 из 2
- Вернуть shop и blog телефон группы ещё не выполнена
- Оставить docs свой телефон ещё не выполнена