2014-02-27 11 views
6

My Playbook führt eine Liste der Rollen:Wie rufe ich eine Rolle aus einer anderen Rolle in Ansible auf?

roles: 
    - common 
    - postgres 
    - nginx 
    - supervisord 
    - { role: deploy_app, app_name: myapp } 
    - { role: deploy_app, app_name: otherapp } 

ich eine andere Rolle haben, celery, dass ich nur ausgeführt werden soll, wenn die genannte App myapp erstellt deploy_app verwenden. Ich dachte, ich sollte einen Parameter in die Rolle wie diese passieren:

- { role: deploy_app, app_name: myapp, celery: yes } 

Dann in meiner deploy_app Rolle, würde ich eine when bedingte verwenden:

- name: create celery worker for application 
    <RUN ROLE HERE> 
    when: '{{ celery }}' == 'yes' 

Wie kann ich bedingt eine Rolle laufen aus eine Aufgabenliste?

+0

Haben Sie bei http://docs.ansible.com/playbooks_conditionals.html geschaut? – Mxx

Antwort

2

würde ich vorschlagen, nicht aus einer Textbuch anrufen und einen Zustand, in Ihren Eintrag Büchern entweder

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

oder einfach in eine Gruppe von Aufgaben in einer Datei und machen einen bedingten Import

konvertieren verwenden

Hoffe, dass hilft.

5

Ich denke ansible depenencies würde hier helfen. Erstellen Sie einfach eine /meta/main.yml in Ihrer Rolle mit dem folgenden:

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

Es klingt wie das OP will 'deploy_app' zu laufen * vor *' Sellerie'. – augurar

Verwandte Themen