我正在使用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"
是否可以这样做,如果可以,怎么做?
答案 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'似乎就是'何时'不会工作。