Прежде чем начать, позвольте мне дать немного подробнее на моей анзибль структуре каталогованзибль Условная переменная
- среды
- производство # инвентаризации файл для производственных серверов
- group_vars
- host_vars
- хосты
- постановка файл # инвентарь для промежуточной среды
- group_vars
- host_vars
- хостов
- производство # инвентаризации файл для производственных серверов
- роли
- Nginx
- MySQL
- и т.д.
- deploy_app.yml
так прямо сейчас, если я хочу, чтобы развернуть один приложений в постановке, я могу просто запустить эту команду PlayBook:
ansible-playbook -i environments/staging/hosts deploy-app.yml
Например,
, я определил путь для моего каталога app1 на этапе/group_vars/webserver на «/var/www/staging.app1.com». но мне также нужно развернуть на тот же сервер для приложения2, но с другим каталогом. Можно ли использовать условную переменную в group_vars?
Так что, если я бег:
ansible-playbook -i environments/staging/hosts deploy-app.yml --extra-vars "app_name=app1"
будет развернуть на постановку сервера на /var/www/staging.app1.com и:
ansible-playbook -i environments/staging/hosts deploy-app.yml --extra-vars "app_name=app2"
будет развернуть на постановку сервера на /var/www/staging.app2.com
Я знаю, что самый простой способ может просто определить переменную app_dir при запуске playbook, но, если возможно, я предпочитаю определять имя приложения, тогда app_dir будет используется на основе указанного имени приложения.
if app_name = app1, then app_dir = /var/www/staging.app1.com
elif app_name = app2, then app_dir = /var/www/staging.app2.com
Пожалуйста, сообщите пожалуйста
это может сработать, но другая проблема заключается в том, что у меня также есть другая переменная, которая должна иметь условные параметры, такие как база данных ip, ключ приложения и другая переменная, которая отличается между этими двумя приложениями. Кажется, что наиболее приемлемым решением на данный момент является разделение двух приложений на собственный хост и group_vars – AlamHo
Я обновил ответ. Обратите внимание, что вы, как правило, получите более релевантные ответы, если вы укажете все детали в вопросе. –
Спасибо. это именно то, что я ищу. Сначала я уже пытаюсь использовать ваше первое решение, тогда я понял, что есть какая-то переменная, которая отличается от каждого приложения – AlamHo