Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ansible_new [2024/11/11 10:08] root [Handlers] |
ansible_new [2024/11/13 18:47] (aktuell) root [Rescue] |
||
---|---|---|---|
Zeile 270: | Zeile 270: | ||
- name: My Play | - name: My Play | ||
hosts: hosta | hosts: hosta | ||
+ | force_handlers: | ||
tasks: | tasks: | ||
- name: Get kernel | - name: Get kernel | ||
Zeile 279: | Zeile 280: | ||
handlers: | handlers: | ||
- name: Reboot after kernel installation | - name: Reboot after kernel installation | ||
- | ansible.bultin.reboot: | + | ansible.builtin.reboot: |
</ | </ | ||
Zeile 289: | Zeile 290: | ||
+ | * force_handlers -> Wenn true werden handler auch ausgeführt obwohl ein nachfolgender Task im play fehlgeschlagen ist. | ||
+ | * Hat task A ein Notify und Task B schlägt fehl wird normalerweise der Handler von A nicht ausgeführt (trotz Notify). force_handlers sorgt dafür das Handler auch ausgeführt werden (die die eine Notification bis zu dem Zeitpunkt haben) wenn nicht alle Tasks erfolgreich sind | ||
* notify -> sendet eine Nachricht an einen Handler wenn der Task tatsächlich etwas ändert (state changed), die Bedingung die der Task sicherstellen soll also nicht gegeben war | * notify -> sendet eine Nachricht an einen Handler wenn der Task tatsächlich etwas ändert (state changed), die Bedingung die der Task sicherstellen soll also nicht gegeben war | ||
* state: latest stellt sicher das die letzte Version eines Paketes installiert ist | * state: latest stellt sicher das die letzte Version eines Paketes installiert ist | ||
Zeile 298: | Zeile 301: | ||
* aber jeweils nur einmal pro System (auch wenn mehrere Tasks für das gleiche System und den gleichen Handler Notifies gesendet haben) | * aber jeweils nur einmal pro System (auch wenn mehrere Tasks für das gleiche System und den gleichen Handler Notifies gesendet haben) | ||
+ | |||
+ | ====== When ====== | ||
+ | |||
+ | * Bedingung | ||
+ | * Block oder Task wird nur ausgeführt wenn die Bedingung erfüllt ist | ||
+ | * Bedingung ist ein Jinja-2-Ausdruck, | ||
+ | |||
+ | <sxh yaml> | ||
+ | - name: My first play | ||
+ | tasks: | ||
+ | - name: First task | ||
+ | hosts: hostA | ||
+ | when: ansible_facts[' | ||
+ | ansible.builtin.apt: | ||
+ | name: neovim | ||
+ | state: latest | ||
+ | </ | ||
+ | |||
+ | * Führt den Task nur aus wenn die os_family in den Ansible-Facts Debian ist | ||
+ | * kann Sinn machen wenn man zum Beispiel verschiedene Systeme mit verschiedenen Betriebssystemen hat und deswegen verschiedene Module verwenden muss | ||
+ | |||
+ | |||
+ | ====== 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[' | ||
+ | become: true | ||
+ | become_method: | ||
+ | block: | ||
+ | - name: First task | ||
+ | ansible.builtin.apt: | ||
+ | name: neovim | ||
+ | state: latest | ||
+ | update_cache: | ||
+ | - name: Make a temporary file | ||
+ | ansible.builtin.tempfile: | ||
+ | prefix: myfile | ||
+ | </ | ||
+ | |||
+ | * die Tasks im Block werden nur ausgeführt wenn die os_family==" | ||
+ | * when-Statement auf Block-Level | ||
+ | * Alle Tasks im Block werden mit root-Rechten ausgeführt | ||
+ | * become: true und become_method: | ||
+ | * 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[' | ||
+ | become: true | ||
+ | become_method: | ||
+ | block: | ||
+ | - name: First task | ||
+ | ansible.builtin.apt: | ||
+ | name: neovim | ||
+ | state: latest | ||
+ | update_cache: | ||
+ | - 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 | ||
+ | | ||
+ | </ | ||
+ | |||
+ | * 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[' | ||
+ | become: true | ||
+ | become_method: | ||
+ | block: | ||
+ | - name: First task | ||
+ | ansible.builtin.apt: | ||
+ | name: neovim | ||
+ | state: latest | ||
+ | update_cache: | ||
+ | - name: Make a temporary file | ||
+ | ansible.builtin.tempfile: | ||
+ | prefix: myfile | ||
+ | always: | ||
+ | - name: Clear retrieved packages | ||
+ | ansible.builtin.apt: | ||
+ | clean: true | ||
+ | </ | ||
+ | |||
+ | |||
+ | * Task "Clear retrieved packages" | ||
+ | |||
+ | ====== 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**/ | ||
+ | |||
+ | * Keyword tags | ||
+ | * Wert ist ein einzelnes Keyword oder eine Liste von Keywords | ||
+ | |||
+ | ^Tag ^Beschreibung ^ | ||
+ | |never|Führe die Statements niemals aus. \\ \\Es sei denn " | ||
+ | |always | führt den Statements immer aus. \\ \\ Egal welcher Tag auf der Kommandozeile angegeben wurde. \\ | ||
+ | |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: | ||
+ | |||
+ | * < | ||
+ | * < | ||
+ | * definiert eine Liste von Tags die ausgeführt werden soll | ||
+ | * nur statements die diesen Tag haben werden ausgeführt (oder wenn der Tag " | ||
+ | * < | ||
+ | * < | ||
+ | * 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 < | ||
+ | * 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 < | ||
+ | |all|Alle Tags, inkl. Task die keine Tags haben. \\ Aber nicht die mit " | ||
+ | |tagged|Alle Tasks aus die ein tag haben. \\ Außer mit " | ||
+ | |untagged|Nur Tasks die keinen Tag haben| | ||
+ | |Custom-Tag|Ein beliebiges Tag| | ||
+ | |ohne < | ||
+ | |||
+ | |||
+ | **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: | ||
+ | - name: Make a temporary file | ||
+ | ansible.builtin.tempfile: | ||
+ | prefix: myfile | ||
+ | </ | ||
+ | |||
+ | |||
+ | Task " | ||
+ | * kein Tag angegeben 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: | ||
+ | - name: Make a temporary file | ||
+ | ansible.builtin.tempfile: | ||
+ | prefix: myfile | ||
+ | </ | ||
+ | |||
+ | |||
+ | Task " | ||
+ | * < | ||
+ | * wegen " | ||
+ | * wenn kein tag-Option angegeben wurde | ||
+ | * wenn " | ||
+ | * wenn " | ||
+ | |||
+ | |||
+ | |||
+ | ** always:** | ||
+ | <sxh yaml> | ||
+ | - name: My first play | ||
+ | hosts: myhosts | ||
+ | tasks | ||
+ | - name: Install vim | ||
+ | tags: | ||
+ | - always | ||
+ | ansible.builtin.apt: | ||
+ | name: neovim | ||
+ | state: latest | ||
+ | update_cache: | ||
+ | - name: Make a temporary file | ||
+ | ansible.builtin.tempfile: | ||
+ | prefix: myfile | ||
+ | </ | ||
+ | |||
+ | Task " | ||
+ | Wir nur nicht ausgeführt wenn < | ||
====== Modules ====== | ====== Modules ====== | ||