#ansible
#ansible
Вопрос:
У меня есть требование, при котором мне нужно использовать group_vars
in Ansible, но оно не обязательно должно находиться на том же пути. В основном мои сборники находятся в SVN, и всякий раз, когда мы хотим развернуть, мы фактически проверяем последнюю версию сборника с версией выпуска, а затем развертываем.
Playbook, который фактически выполняет развертывание, имеет такую структуру —
/home/ansible/myapp/ansible-myapp-release/deploy/ansible-myapp-5.80.0-05
- bin
- roles
- myapp-main.yml
- myapp-full-deployment.yml
- myapp-config.yml
Другая вещь, которую я получаю из SVN, — это то, что содержит конфигурацию для моего приложения, и оно не содержит никаких воспроизведений, и оно может отличаться для разных сред, таких как preprod, prod, test и т.д.
/home/ansible/myapp/ansible-myapp-release/configuration/5.80.0-05/preprod
- config
- group_vars
- preprod.yml
- inventory
- myapp
инвентаризация myapp
—
[preprod]
myapp-preprod
Теперь, когда я выполняю свой первый сборник пьес, я хочу использовать это group_vars
, потому что именно там находится моя конфигурация, preprod.yml
которая будет загружена в шаблоны jinja во время выполнения.
Как я могу использовать это inventory
и group_vars
из этого path
ИЛИ мне нужно скопировать эти папки отсюда в исходный root
каталог playbook, а затем выполнить playbook?
Пожалуйста, дайте мне знать, если кто-нибудь может посоветовать по этому поводу.
В документации говорится, что путь должен быть относительно того, где хранится ваш инвентарь https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#organizing-host-and-group-variables
Комментарии:
1. Если я попытаюсь определить
inventory
путь таким/home/ansible/myapp/ansible-myapp-release/configuration/5.80.0-05/preprod/inventory/myapp
образом, то он также не сработает. Это выдает мне эту ошибку —msg: The task includes an option with an undefined variable. The error was: 'tomcat_symlink_path' is undefined
эта переменная фактически определена в моемpreprod.yml
файле2. Переместитесь
group_vars
в свойinventory
каталог. Выполнено.3. @Zeitounator это было просто. Идеальный. Большое вам спасибо 🙂
Ответ №1:
Цитирование из переменных хоста и группы организации
Ansible загружает файлы переменных хоста и группы путем поиска путей относительно файла инвентаризации или файла playbook
Ниже приведен пример того, как поместить group_vars относительно файла инвентаризации
shell> tree /home/ansible/myapp/ansible-myapp-release/configuration/5.80.0-05/preprod
/home/ansible/myapp/ansible-myapp-release/configuration/5.80.0-05/preprod
└── inventory
├── group_vars
│ └── preprod.yml
└── myapp
Комментарии:
1. Спасибо Владимир. Перемещение group_vars внутри инвентаря, как было предложено, сработало отлично. Я думаю, что я путал с относительными путями.