2017-11-26 2 views
-1

Angenommen, ich habe Playbooks für Nagios-Installation für Ubuntu und CentOS-Maschinen. Wie kann ich die Playbooks je nach Basisgerät anrufen?Kann ich ein Playbook abhängig von der Basismaschine ausführen

Ich möchte nagios_ubuntu Playbook laden, wenn es eine Ubuntu-Maschine und nagios_centos Playbook für CentOS ist.

+0

Was bedeutet "laden" für Sie im Zusammenhang mit ansible? –

Antwort

0

Sie können so etwas tun:

include: ubuntu.yml 
when: ansible_distribution == "Debian" 

include: centos.yml 
when: ansible_distribution == "Centos" 

dies Beachten Sie: http://docs.ansible.com/ansible/latest/playbooks_conditionals.html#applying-when-to-roles-imports-and-includes und dafür: http://docs.ansible.com/ansible/latest/include_module.html

+0

In Ansible 2.4 möchten Sie 'import_playbook:' anstelle von 'include:' https://docs.ansible.com/ansible/2.4/playbooks_reuse_includes.html –

0

Zunächst einmal können Sie nicht umfassen Textbuch für Host . Playbooks haben hosts Direktive im Inneren definiert. Siehe playbook/tasks include

So können Sie Aufgaben für verschiedene Betriebssysteme umfassen, in diesem Fall, dass Sie möchten, können dynamisch verwenden Include-Anweisung in Textbuch:

- include_tasks: "nagios_{{ ansible_os_family | lower }}.yml" 
0

Sie können ein Beispiel verwenden, mit group_by in Best Practices Abschnitt beschrieben.

Sie würden immer noch die Spielbücher ändern müssen, um sich eine geeignete hosts Erklärung zu enthalten, zum Beispiel:

nagios_centos.yml:

--- 
- hosts: nagios_centos 
# ... the rest of the play 

nagios_ubuntu.yml:

--- 
- hosts: nagios_ubuntu 
# ... the rest of the play 

Haupttextbuch:

--- 
- hosts: all 
    tasks: 
    - group_by: 
     key: nagios_{{ ansible_os_family | lower }} 

- import_playbook: nagios_centos.yml 

- import_playbook: nagios_ubuntu.yml 

Aufgrund der hosts Definition würde nur eines der Spielbücher effektiv ausgeführt werden.

Verwandte Themen