Benutzer-Werkzeuge

Webseiten-Werkzeuge


ansible_new

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ansible_new [2024/11/11 19:52]
root [Handlers]
ansible_new [2024/11/13 18:47] (aktuell)
root [Rescue]
Zeile 323: Zeile 323:
  
  
 +====== Blocks ======
 +
 +  * gruppieren Tasks
 +      * Statements des Blocks werden vererbt an die Tasks -> z.B. Become
 +      * when-Statements gelten für den gesamten Block usw.
 +
 +<sxh yaml>
 +- name: My first play
 +  hosts: myhosts 
 +  tasks:
 +    - name: First Block 
 +      when: ansible_facts['os_family'] == "Debian"
 +      become: true
 +      become_method: sudo
 +      block:
 +        - name: First task
 +          ansible.builtin.apt:
 +            name: neovim
 +            state: latest
 +            update_cache: True
 +        - name: Make a temporary file
 +          ansible.builtin.tempfile:
 +            prefix: myfile
 +</sxh>
 +
 +  * die Tasks im Block werden nur ausgeführt wenn die os_family=="Debian" ist
 +      * when-Statement auf Block-Level
 +  * Alle Tasks im Block werden mit root-Rechten ausgeführt
 +      * become: true und become_method: sudo auf Blocklevel
 +      * Tasks in einem Block erben die Statements auf Blockebene
 +
 +
 +===== Rescue =====
 +
 +  * Wird ausgeführt wenn einer der Tasks im Block fehlschlägt
 +      * wenn ein Task fehlschlägt werden die nachfolgenden Task normalerweise nicht mehr ausgeführt
 +      * dient zum Beispiel um Aktionen rückgängig zu machen und das System nicht halbkonfiguriert zurückzulassen
 +  * rescue-Attribute enthält Liste von Tasks
 +
 +<sxh yaml>
 +- name: My first play
 +  hosts: myhosts 
 +  tasks:
 +    - name: First Block 
 +      when: ansible_facts['os_family'] == "Debian"
 +      become: true
 +      become_method: sudo
 +      block:
 +        - name: First task
 +          ansible.builtin.apt:
 +            name: neovim
 +            state: latest
 +            update_cache: True
 +        - name: Make a temporary file
 +          ansible.builtin.tempfile:
 +            prefix: myfile
 +      rescue:
 +        - name: Remove the vim package
 +          ansible.builtin.apt:
 +            name: neovim
 +            state: absent
 +            purg: true
 +        
 +</sxh>
 +
 +  * Im Falle eines Fehlers in block: würde das vim-Paket in rescue-Attribut deinstalliert
 +
 +
 +===== Always =====
 +
 +  * wird immer ausgeführt
 +      * egal ob die Tasks im Block fehlschlagen oder erfolgreich sind
 +
 +<sxh yaml>
 +- name: My first play
 +  hosts: myhosts 
 +  tasks:
 +    - name: First Block 
 +      when: ansible_facts['os_family'] == "Debian"
 +      become: true
 +      become_method: sudo
 +      block:
 +        - name: First task
 +          ansible.builtin.apt:
 +            name: neovim
 +            state: latest
 +            update_cache: True
 +        - name: Make a temporary file
 +          ansible.builtin.tempfile:
 +            prefix: myfile
 +      always:
 +        - name: Clear retrieved packages
 +          ansible.builtin.apt:
 +            clean: true
 +</sxh>
 +
 +
 +  * Task "Clear retrieved packages" wird immer ausgeführt, unabhängig vom Erfolg oder Fehlschlagen der Tasks im block
 +
 +====== Tags ======
 +
 +  * Ermöglichen das ausführen nur bestimmter Teile
 +  * können auf Handler, Blocks, Plays, Tasks, Roles, includes und imports angewendet werden
 +
 +Folgende Werte sind **reserviert**/haben eine besondere Bedeutung und können in ansible-Dateien auftauchen:
 +
 +  * Keyword tags
 +      * Wert ist ein einzelnes Keyword oder eine Liste von Keywords
 +
 +^Tag ^Beschreibung ^
 +|never|Führe die Statements niemals aus. \\ \\Es sei denn "never" wird in der tags-Option explizit angegeben oder anderer Tag in der Tag-Liste für dieses Element wurde explizit angegeben. \\ Auch nicht bei Angabe von "all" oder wenn kein Tag beim Aufruf von ansible-playbook angegeben |
 +|always | führt den Statements immer aus. \\ \\ Egal welcher Tag auf der Kommandozeile angegeben wurde. \\     Ausnahme <code>--skip-tags always</code> ist as Parameter angegeben| 
 +|kein Tag|Wird ausgeführt wenn keine Tags auf der Kommandozeile ausgewählt wurden oder all oder untagged|
 +|Benutzerspezifischer Tag|Wird ausgeführt wenn der 
 +
 +
 +**ansible-playbook** hat folgende Parameter für Tags:
 +
 +  * <code>--tags <Liste von Tags, ohne Leerzeichen></code>
 +      * <code> ansible-playbook --tags Tag1,Tag2 playbook.yml </code>
 +      * definiert eine Liste von Tags die ausgeführt werden soll
 +          * nur statements die diesen Tag haben werden ausgeführt (oder wenn der Tag "always" ist)
 +  * <code>--skip-tags <Liste von Tags, ohne Leerzeichen</code>
 +      * <code> ansible-playbook --skip-tags Tag1,Tag2 playbook.yml </code>
 +      * definiert eine Liste von Tags die geskipped (übersprungen) werden sollen
 +          * alle Tags (und Tasks die keinen Tag haben) die nicht in der Liste stehen werden ausgeführt
 +  * wird <code>--tags</code> und <code>--skip-tags</code> kombiniert, hat <code>--skip-tags</code> Vorrang
 +      * hat ein Task ein Tag welches im tags-Parameter angegeben wurde und ein Tag welches in skip-tags steht wird der Task **nicht** ausgeführt
 +          * -> skip-tags hat Vorrang
 +
 +Folgende Tags gibt es:
 +
 +^Tag ^Beschreibung ^
 +|Never|Kann in <code>--tags</code> angegeben werden um Tags auszuführen die mit "never" markiert sind|
 +|all|Alle Tags, inkl. Task die keine Tags haben. \\ Aber nicht die mit "never" markiert sind. |
 +|tagged|Alle Tasks aus die ein tag haben. \\ Außer mit "never" getagte|
 +|untagged|Nur Tasks die keinen Tag haben|
 +|Custom-Tag|Ein beliebiges Tag|
 +|ohne <code>--tags</code>|Alles (auch getaggte), außer in der tags-Liste steht "never" (auch dann nicht wenn noch andere Tags vorkommen|
 +
 +
 +**Einfaches Tag**
 +
 +<sxh yaml>
 +- name: My first play
 +  hosts: myhosts 
 +  tasks
 +    - name: Install vim
 +      tags:
 +        - vim
 +      ansible.builtin.apt:
 +        name: neovim
 +        state: latest
 +        update_cache: True
 +    - name: Make a temporary file
 +        ansible.builtin.tempfile:
 +        prefix: myfile
 +</sxh>
 +
 +
 +Task "Install vim" würde ausgeführt wenn
 +  * kein Tag angegeben wurde
 +  * <code>--tags vim</code> angegeben wurde
 +  * <code>--tags tagged</code> angeben wurde
 +  * <code>--tags all</code> angeben wurde
 +
 +
 +** Tag + never:**
 +<sxh yaml>
 +- name: My first play
 +  hosts: myhosts 
 +  tasks
 +    - name: Install vim
 +      tags:
 +        - vim
 +        - never
 +      ansible.builtin.apt:
 +        name: neovim
 +        state: latest
 +        update_cache: True
 +    - name: Make a temporary file
 +        ansible.builtin.tempfile:
 +        prefix: myfile
 +</sxh>
 +
 +
 +Task "Install vim" würde ausgeführt wenn
 +  * <code>--tags vim</code> angegeben wurde
 +  * wegen "never" würde es nicht ausgeführt
 +      * wenn kein tag-Option angegeben wurde
 +      * wenn "all" in der Tag-Option steht
 +      * wenn "tagged" in der Tag-Option steht
 +
 +
 +
 +** always:**
 +<sxh yaml>
 +- name: My first play
 +  hosts: myhosts 
 +  tasks
 +    - name: Install vim
 +      tags:
 +        - always
 +      ansible.builtin.apt:
 +        name: neovim
 +        state: latest
 +        update_cache: True
 +    - name: Make a temporary file
 +        ansible.builtin.tempfile:
 +        prefix: myfile
 +</sxh>
 +
 +Task "Install vim" würde immer ausgeführt (egal welcher Tag, egal ob kein Tag). \\
 +Wir nur nicht ausgeführt wenn <code>--skip-tags always</code>
 ====== Modules ====== ====== Modules ======
  
ansible_new.1731351152.txt.gz · Zuletzt geändert: 2024/11/11 19:52 von root