我的剧本有一系列角色:
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'
如何在任务列表中有条件地运行角色?
最佳答案
我认为ansible depenencies在这里会有所帮助。只需创建一个
角色内部的/meta/main.yml
,其中包含以下内容:
---
dependencies:
- { role: celery, tags: ["sometag"], when: "celery == 'yes'" }