我的剧本列出了一系列角色:
roles:
- common
- postgres
- nginx
- supervisord
- { role: deploy_app, app_name: myapp }
- { role: deploy_app, app_name: otherapp }
我还有另一个角色celery
,我只想在使用myapp
创建名为deploy_app
的应用时运行。我在想我应该将一个参数传递给这样的角色:
- { role: deploy_app, app_name: myapp, celery: yes }
然后在我的deploy_app
角色中,我会使用when
条件:
- name: create celery worker for application
<RUN ROLE HERE>
when: '{{ celery }}' == 'yes'
如何从任务列表中有条件地运行角色?
答案 0 :(得分:5)
我认为ansible depenencies会有所帮助。只需创建一个
您的角色中/meta/main.yml
以下内容:
---
dependencies:
- { role: celery, tags: ["sometag"], when: "celery == 'yes'" }
答案 1 :(得分:2)
我建议不要在剧本中打电话,也不要在入门书中使用条件
- { role: celery, tags: ["sometag"], when: "celery == 'yes'" }
或简单地将其转换为文件中的一组任务并执行条件导入
希望有所帮助。