Безграничное использование --extra-vars for conditional включает
Я использую Ansible для развертывания среды, которая может иметь распределенные службы или нет. Я бы хотел условно включить игровые книги, основанные на аргументах, которые я перехожу к незанятой пьесе.
create_server.yml
---
- include: launch_ec2_instance.yml
- include install_postgres.yml
when {{db}} == "Y"
- include install_redis.yml
when {{redis}} == "Y"
Вот как я вызываю create_server.yml
ansible-playbook create_server.yml -i local --extra-vars "db=Y redis=N"
Можно ли это сделать, и если да, то как?
Ответы
Ответ 1
Да. Возможно. Вам не хватает двоеточия (:) в вашем заявлении when.
---
- include: launch_ec2_instance.yml
- include install_postgres.yml
when: {{ db }} == "Y"
- include install_redis.yml
when: {{ redis }} == "Y"
Вы также можете опустить фигурные скобки ({{}}):
---
- include: launch_ec2_instance.yml
- include install_postgres.yml
when: db == "Y"
- include install_redis.yml
when: redis == "Y"
Ответ 2
Ответ на @Rico правильный, за исключением того, что он применяется только тогда, когда оператор include является частью задачи.
Eg.
---
tasks:
- include install_postgres.yml
when: db == "Y"
Если ваша playbook - это всего лишь куча включений, так как ваш "create_server.yml", похоже, "когда" не работает.