Ansible перезаписывает, какая переменная? Параметр инвентаризации или дополнительные параметры во время выполнения? - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть параметр pkg для всех хостов среды, указанных c инвентарь.

[atlanta]
host1
host2

[atlanta:vars]
ntp_server=ntp.atlanta.example.com
proxy=proxy.atlanta.example.com
pkg=123

Теперь, если я использую ту же переменную pkg во время исполнения ansible playbook ex. ansible-playbook xyzzy.yml -e "pkg=123" с некоторым другим значением. Какой из них будет выбран Ansible? Значение, связанное с pkg на уровне инвентаря или значение, указанное во время выполнения в команде?

1 Ответ

1 голос
/ 17 февраля 2020

Дополнительные переменные (т.е. переменные, данные во время выполнения) переопределяют все остальные переменные. Переменные инвентаря будут переопределены дополнительной переменной, заданной во время выполнения. Подробно, приоритет имеет вид:

Вот порядок приоритета от наименьшего к наибольшему (последние перечисленные переменные выигрывают по приоритетам):

  • ...
  • файл инвентаря или группы скриптов
  • инвентарь group_vars / all
  • playbook group_vars / all
  • инвентарь group_vars / *
  • playbook group_vars / *
  • файл инвентаризации или сценарий хоста vars
  • инвентарь host_vars / *
  • playbook host_vars / *
  • ...
  • дополнительные переменные ( всегда выигрывать приоритет)

do c действительно немного сбивает с толку. Для пояснения:

  • inventory file or script group vars - это переменные, связанные с группами в ваших файлах инвентаря. В вашем случае все в atlanta:vars - это переменные группы файлов инвентаризации
    [atlanta:vars]
    pkg=123
    
  • inventory file or script host vars - это переменные, связанные с указанным c хостом, и имеют более высокий приоритет, чем inventory file or script group vars, например:
    [atlanta]
    host1 pkg=override-123
    host2
    
  • inventory group_vars/all|* - переменные, определенные в папке инвентаризации group_vars/, например $PLAYBOOK_DIR/inventories/my-inventory/group_vars/atlanta/main.yml
  • playbook group_vars/all|* - переменные, определенные в playbook * 1053 Папка * group_vars/, такая как $PLAYBOOK_DIR/group_vars/atlanta/main.yml
  • inventory host_vars/* - переменные в инвентаризация * Папка host_vars/, такая как $PLAYBOOK_DIR/inventories/my-inventory/host_vars/somehostname.yml
  • playbook host_vars/* - переменные в playbook host_vars/ папка, такая как $PLAYBOOK_DIR/host_vars/somehostname.yml

См. Ansible do c о переменном приоритете .

You Возможно, вы захотите проверить Расположение каталогов и Альтернативное расположение каталогов для лучшего понимания всех этих каталогов и файлов.

...