我的剧本有一系列角色:

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'" }

10-01 01:08
查看更多