2014-02-27 6 views
6

Мой Playbook работает список ролей:Как я могу назвать роль из другой роли в 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' 

Как можно условно запустить роль изнутри список задач?

+0

вы смотрели на http://docs.ansible.com/playbooks_conditionals.html ли? – Mxx

ответ

2

Я хотел бы предложить, чтобы не звонить из в PlayBook и использовать либо условие в ваших книгах въездных

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

или просто превратить его в группу задач в файл и сделать условный импорт

Надеюсь, что помогает.

5

Я думаю, ansible depenencies поможет здесь. Просто создайте /meta/main.yml внутри вашей роли следующим:

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

Кажется, что OP хочет, чтобы 'deploy_app' запускался * перед *' celery'. – augurar

Смежные вопросы