Безграничное использование --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", похоже, "когда" не работает.