Как работает работающий host_vars?

I создал репо, чтобы воспроизвести мой сценарий.

По сути, мы загружаем инвентарь с помощью наших хостов, мы можем переопределять значения для каждого узла через инвентарь без проблем, но хотели бы попробовать использовать host_vars.

Я не на 100% понимаю, как хосты хоста сопоставляются с хостом. Я читал ansible repo для примеров, но, похоже, не мог заставить его работать как задокументированный, поэтому я ищу некоторые проверки нашей установки.

Когда я запускаю команду ansible-playbook -i ansible.inventory site.yml -clocal в моем примере репо, я ожидаю, что файл host_vars/{{ ansible_hostname }} будет прочитан и переопределит все, что установлено в vars, но это, похоже, не происходит.

Может кто-нибудь, пожалуйста, назовите меня на рабочем примере, чтобы я мог видеть, где мы ошибаемся?

Ответ 1

Поскольку документация не очень специфична для этой темы, здесь приведен порядок приоритетности для vars в текущей версии Ansible:

  • Vars, установленный в командной строке -e foo = set_on_cmd_line
  • Vars, установленный в блоке vars_files: в игре
  • Vars, установленный в блоке vars: в игре
  • Vars, установленный в host_vars/
  • Vars, установленный в group_vars/
  • Роль default vars role/.../defaults/main.yml

Вы должны думать, что host_vars и group_vars больше похожи на значения по умолчанию, а не переопределения для значений по умолчанию. Если у вас есть тот же самый параметр var, который установлен в vars_files: block как в вашем примере, он будет иметь приоритет.