Предположим, что Ansible структура:
.
├── group_vars
│ └── all
└── site.yml
Где all
содержит my_test_variable: yes
, а site.yml
:
- hosts: all
tasks:
- name: Variable test
debug: msg={{ my_test_variable }}
Я использую Vagrant для его локального запуска, поэтому команда выглядит так:
$ ansible-playbook site.yml -i/path-to-vagrant/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory --private-key=/path-to-vagrant/.vagrant/machines/default/virtualbox/private_key -u vagrant
Vagrant сгенерированный инверторный файл:
# Generated by Vagrant
default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
И выход:
PLAY: ***************************************************************************
TASK [setup] ********************************************************************
ok: [default]
TASK [Variable test] ************************************************************
fatal: [default]: FAILED! => {"msg": "ERROR! the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'my_test_variable' is undefined", "failed": true}
PLAY RECAP **********************************************************************
default : ok=1 changed=0 unreachable=0 failed=1
Я знаю, что этот бродячий инвентарь не находится внутри какой-либо группы - потому что его нет, но все группы наследуют от всех, не так ли?
Почему это не работает? Что я упустил?
Я совершенно новый для Ansible. Прочитайте много документов, несколько примеров и даже некоторые SO-вопросы, такие как Ansible, не захватывают group_vars, не загружая его вручную - не совсем моя проблема - и не может получить возможность распознавать групповые переменные - закрыть, но не там,
редактировать
Я следую рекомендуемой структуре проекта из Ansible doc, а в записи doc переменных они упоминают global_vars/all:
Полные значения по умолчанию для сайта должны быть определены как параметр "group_vars/all".
Несмотря на отсутствие прямой ссылки на то, как загрузить эти значения по умолчанию, я предполагаю, что мне не нужно явно добавлять их (как это было предложено в ответе @thiago-borges). Или я?
Причиной этого является то, что я намереваюсь иметь групповые вары, наследующие от всех, например:
.
├── group_vars
│ └── all
│ └── production
│ └── staging
└── site.yml
И когда я выполняю загружаемую книгу для каждого из них, разные файлы загружаются без явного указания их в файле воспроизведения, например:
ansible-playbook -i production site.yml
Изменить 2
Проблема была ошибкой в вопросе. После обновления он работал как задокументированный.
Должен ли я удалить этот вопрос?