Wie ruft man Rollen im Ansible-Playbook auf?
sobes.tech KI
Antwort von AI
Rollen in Ansible können auf mehrere Arten innerhalb eines Playbooks aufgerufen werden.
-
Verwendung des Schlüsselworts
rolesauf Playbook-Ebene:# playbooks/my_playbook.yml - name: Rollen auf Server anwenden hosts: webservers become: yes roles: - role: common # Aufruf der Rolle 'common' - role: nginx # Aufruf der Rolle 'nginx' vars: # Übergabe von Variablen an die Rolle nginx_port: 8080 - another_role # Verkürzte Form des AufrufsDiese Methode wird verwendet, um Rollen aufzurufen, die sequenziell für alle in
hostsdefinierten Hosts ausgeführt werden. -
Verwendung des Moduls
include_rolein der Aufgabenliste:# playbooks/my_playbook.yml - name: Rollen mit Bedingungen anwenden hosts: appservers tasks: - name: Datenbankrolle nur für dev einschließen include_role: name: database when: env == 'dev' # Rolle bedingt aufrufen - name: Anwendungsrolle einschließen include_role: name: app vars: app_version: 1.2.0 # Variablen an die Rolle übergebenDas Modul
include_roleführt die Rolle aus, als wäre sie eine in die aktuelle Aufgabe eingebundene Aufgabenliste. Es erlaubt die Verwendung von Bedingungen (when) und Schleifen (loop) zur Steuerung der Rollenausführung. -
Verwendung des Moduls
import_rolein der Aufgabenliste:# playbooks/my_playbook.yml - name: Rolle der Anwendung importieren hosts: appservers tasks: - name: Rolle der Anwendung für alle Hosts importieren import_role: name: app vars: app_config_file: /etc/app/config.conf # VariablenübergabeDas Modul
import_rolewird in der Analysephase des Playbooks verarbeitet, vor der tatsächlichen Ausführung. Das bedeutet, dass alle Direktiven wiewhenauf alle Aufgaben innerhalb der Rolle angewendet werden, nicht nur auf den Rollenaufruf selbst. Variablen, die übervarsübergeben werden, sind innerhalb der Rolle verfügbar.
Der Hauptunterschied zwischen include_role und import_role liegt im Zeitpunkt der Verarbeitung: import_role wird statisch in der Analysephase verarbeitet, während include_role dynamisch während der Playbook-Ausführung erfolgt. Dies beeinflusst die Möglichkeit, Bedingungen und Schleifen zu verwenden:
| Funktion | include_role |
import_role |
|---|---|---|
| Verarbeitung | Dynamisch | Statisch |
Verwendung von when |
Ja | Nein |
Verwendung von loop |
Ja | Nein |
| Möglichkeit, Variablen, die vorher im Play definiert wurden, zu verwenden | Ja | Nein |
Die Wahl zwischen diesen Methoden hängt von der erforderlichen Flexibilität und dem Zeitpunkt der Verarbeitung ab. Für einfache Rollenimporte reicht in der Regel das Schlüsselwort roles oder import_role. Für komplexere Szenarien mit Bedingungen und Schleifen wird include_role verwendet.