Ansible使用--extra-vars进行条件包含

时间:2014-03-19 00:46:09

标签: ansible-playbook

我正在使用Ansible来部署可能分发或不分发服务的环境。我想根据我传给ansible-playbook的论据有条件地包括剧本。

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"

是否可以这样做,如果可以,怎么做?

2 个答案:

答案 0 :(得分:14)

是。这是可能的。您在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"

答案 1 :(得分:4)

@ Rico的答案是正确的,只有当你的include语句是任务的一部分时它才适用。

例如

---
tasks:
  - include install_postgres.yml
    when: db == "Y"

如果你的剧本只是一堆包含,因为你的'create_server.yml'似乎就是'何时'不会工作。