2016-04-04 2 views
1

Die ansible Best-Practices-Dokumentation hat dieses Beispiel-Code:Wie kann ich ein Tag auf jeden Befehl in einer Ansible-Task-Datei anwenden?

--- 
# file: roles/common/tasks/main.yml 

- name: be sure ntp is installed 
    yum: name=ntp state=installed 
    tags: ntp 

- name: be sure ntp is configured 
    template: src=ntp.conf.j2 dest=/etc/ntp.conf 
    notify: 
    - restart ntpd 
    tags: ntp 

- name: be sure ntpd is running and enabled 
    service: name=ntpd state=running enabled=yes 
    tags: ntp 

I Duplizieren der tags: ntp Linie zu vermeiden, bin auf der Suche. Ist es möglich, dass jede dieser Anweisungen ein Tag erbt?

Antwort

4

Sie könnten arbeiten mit - Block:

➜ ~ cat become.yml 
--- 
- hosts: localhost 
    user: vagrant 
    tasks: 
    - block: 
     - shell: whoami 
     register: result 

     - debug: var=result.stdout 

     - name: become_root_user 
     become: true 
     become_user: root 
     shell: whoami 
     register: sudo_test_result 

     - debug: var=sudo_test_result.stdout 
    tags: 
     - block1 
    - block: 
     - name: creating_new_app_user 
     become: true 
     become_user: root 
     become_method: sudo 
     user: name=app_user password=Bzs310di86b6E groups="adm,sudo" system=yes state=present 

     - name: become_app_user 
     become: true 
     become_user: app_user 
     become_method: sudo 
     shell: whoami 
     register: app_user_test_result 

     - debug: var=app_user_test_result.stdout 
    tags: 
     - block2 

~ ansible-Textbuch -i Echtzeit-Automatisierung/hosts-Sklaven become.yml --tags "block1"

In Ihrem speziellen Fall:

--- 
- block: 
    - name: be sure ntp is installed 
     yum: name=ntp state=installed 

    - name: be sure ntp is configured 
     template: src=ntp.conf.j2 dest=/etc/ntp.conf 
     notify: 
     - restart ntpd 

    - name: be sure ntpd is running and enabled 
     service: name=ntpd state=running enabled=yes 
    tags: ntp 
+0

Awesome! Sieht so aus, als ob diese Funktion Ansible v2 benötigt. – Ryre

+0

Ja, Sie brauchen Ansible 2.0, um Blöcke zu verwenden. –

5

Bevor v2 dies einen Tag eine Zuweisung erreicht werden könnte 'umfassen'

verschieben diese Aufgabe zu einer anderen Datei, sagen ntp.yml

--- 
# file: roles/common/tasks/ntp.yml 

- name: be sure ntp is installed 
    yum: name=ntp state=installed 

- name: be sure ntp is configured 
    template: src=ntp.conf.j2 dest=/etc/ntp.conf 
    notify: 
    - restart ntpd 

- name: be sure ntpd is running and enabled 
    service: name=ntpd state=running enabled=yes 

Und dann sind sie in main.yml

--- 
# file: roles/common/tasks/main.yml 
- include: ntp.yml 
    tags: ntp 
+0

Ich sehe, Sie haben noch die 'Tags: ntp' in der ntp.yml-Datei enthalten, aber wenn ich Ihre Antwort richtig verstehe, könnten diese Tags entfernt werden? – Ryre

+0

Ja, tut mir leid, Sie brauchen nicht die 'Tags: ntp' in ntp.yml @Ryre – shaps

Verwandte Themen