如何在Ansible的另一个角色中调用角色?

时间:2014-02-27 19:22:05

标签: ansible

我的剧本列出了一系列角色:

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'

如何从任务列表中有条件地运行角色?

2 个答案:

答案 0 :(得分:5)

我认为ansible depenencies会有所帮助。只需创建一个 您的角色中/meta/main.yml以下内容:

---
dependencies:
  - { role: celery, tags: ["sometag"], when: "celery == 'yes'" }

答案 1 :(得分:2)

我建议不要在剧本中打电话,也不要在入门书中使用条件

- { role: celery, tags: ["sometag"], when: "celery == 'yes'" }

或简单地将其转换为文件中的一组任务并执行条件导入

希望有所帮助。