У меня есть ситуация, когда у нас есть 3 яруса ящиков, в каждом ярусе мы применяем разные настройки переменных (например, где находится dir cache), но есть куча значений по умолчанию. Я также должен переопределить на на узел, который обычно делается через инвентарь vars на самом хосте. Я не уверен, что лучший способ организовать хосты, чтобы precedence works в мою пользу.Ansible: использование вложенных групп с vars
Вот что я пробовал. В каждом случае у меня есть записи в файле инвентаризации, как это:
[bots-fancy]
fancy-1
[bots-super-fancy]
super-1
[bots-magical]
magic-1
magic-2 provider=aws
На первом, я имел каждый из них с длинной строкой определений переменных. У меня также были разные файлы group_var/bots/[bots-magical | bots-super-fancy | bots-fancy].yaml
. Это быстро стало несостоятельным.
попытка 1: с PlayBook переменных В сборник пьес у меня было что-то вроде этого:
---
hosts:
- bots
vars_files:
- "group_vars/bots/defaults.yml"
- "group_vars/bots/{{ groups_names[0] }}.yml"
roles:
- somethign
это работало (хотя да хрупкими), но это не позволит мне переопределить на на хосте basis. Иногда мне приходилось устанавливать разные вещи на узлах, но не на всей группе.
попытка 2: использование group_vars
для каждого
Я добавил
[bots:children]
bots-fancy
bots-super-fancy
bots-magical
в файл хостов. Удалено любое из vars_files
из учебника и создано group_vars
для каждой группы. Я добавил настройки по умолчанию/общий доступ к group_vars/bots.yaml
. Когда я запустил учебник, он загрузил бы только bots
group_vars. В идеале, я хочу, чтобы он загружал bots
, а затем переопределял его с помощью bots-fancy
. А затем, наконец, значения из файла hosts.
Я не уверен, что лучший способ структурировать эти группы, поэтому любой вход будет очень полезен!