linux:ansible:playbook_example_11

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
linux:ansible:playbook_example_11 [24.09.2022 15:12. ] – [Systemweite Host/Playbook-Definition : site.yml] djangolinux:ansible:playbook_example_11 [27.09.2022 15:54. ] (aktuell) – [Rollen (Beispiele)] link eingefügt django
Zeile 1: Zeile 1:
 ====== Ansible - Erweiterte Konfigurationsbeispiel: Roles ====== ====== Ansible - Erweiterte Konfigurationsbeispiel: Roles ======
 {{:centos:ansible:ansible_logo.png?nolink&125|Bild: Ansible Logo}} \\ \\ {{:centos:ansible:ansible_logo.png?nolink&125|Bild: Ansible Logo}} \\ \\
- 
  
 ===== Grundlagen ===== ===== Grundlagen =====
Zeile 97: Zeile 96:
 ---- ----
  
-=== Webserver Host/Playbook-Definition : web.yml === +=== Webserver Host/Playbook-Definition : web_server.yml === 
-Für die Konfiguration des Webservers an sich verwenden wir dann die Konfigurationsdatei **''web.yml''**; die wir in der zuvor angelegten systemweiten Konfigurationsdatei **''site.yml''** inkludiert hatten. Da die Konfiguration auf allen WEB-Hosts erfolgen soll, geben wir beim Parameter **''hosts''** den Namen der Hostgruppe aus unserer Inventory-Definition an. Bei der Definition der Rollen geben wir die drei **''roles''** an, die wir in unseren zuvor angestellten Überlegungen gewählt hatten. +Für die Konfiguration des Webservers an sich verwenden wir dann die Konfigurationsdatei **''web_server.yml''**; die wir in der zuvor angelegten systemweiten Konfigurationsdatei **''site_generation.yml''** inkludiert hatten. Da die Konfiguration auf allen WEB-Hosts erfolgen soll, geben wir beim Parameter **''hosts''** den Namen der Hostgruppe aus unserer Inventory-Definition an. Bei der Definition der Rollen geben wir die drei **''roles''** an, die wir in unseren zuvor angestellten Überlegungen gewählt hatten. 
-   $ vim ~/ansible/web.yml +   $ vim ~/ansible/playbooks/web.yml 
  
-<file c++ web.yml>--- # Start des Playbooks für den Web-Server+<file c++ web_server.yml>--- # Start des Playbooks für den Web-Server
 - hosts: www - hosts: www
  
Zeile 121: Zeile 120:
 <file c++ ~/ansible/roles/base/tasks/main.yml>--- # Grundlegende Konfiguration für alle Hosts <file c++ ~/ansible/roles/base/tasks/main.yml>--- # Grundlegende Konfiguration für alle Hosts
   - name: "***base*** : Gruppe für (WEB-Entwickler) '{{ createuser }}' erstellen"   - name: "***base*** : Gruppe für (WEB-Entwickler) '{{ createuser }}' erstellen"
-    group: # https://docs.ansible.com/ansible/latest/modules/group_module.html+    ansible.builtin.group: # https://docs.ansible.com/ansible/latest/modules/group_module.html
       name: '{{ createuser }}'       name: '{{ createuser }}'
       gid: '{{ createguid }}'       gid: '{{ createguid }}'
Zeile 127: Zeile 126:
  
   - name: "***base*** : WEB-Admin Nutzerkonto für den User '{{ createuser }}' mit frn zugehörigen UID '{{ createguid }}' anlegen un der Gruppe '{{ createuser }}' zuordnen."   - name: "***base*** : WEB-Admin Nutzerkonto für den User '{{ createuser }}' mit frn zugehörigen UID '{{ createguid }}' anlegen un der Gruppe '{{ createuser }}' zuordnen."
-    user: # https://docs.ansible.com/ansible/latest/modules/user_module.html+    ansible.builtin.user: # https://docs.ansible.com/ansible/latest/modules/user_module.html
       name: '{{ createuser }}'       name: '{{ createuser }}'
       comment: '{{ createusername }}'       comment: '{{ createusername }}'
Zeile 135: Zeile 134:
  
   - name: "***base*** : Initiales Passwort für den WEB-Admin '{{ createuser }}' hinterlegen"   - name: "***base*** : Initiales Passwort für den WEB-Admin '{{ createuser }}' hinterlegen"
-    shell: # https://docs.ansible.com/ansible/latest/modules/shell_module.html+    ansible.builtin.shell: # https://docs.ansible.com/ansible/latest/modules/shell_module.html
       cmd: usermod -p $(echo '{{ createpassword }}' | openssl passwd -1 -stdin) {{ createuser }}       cmd: usermod -p $(echo '{{ createpassword }}' | openssl passwd -1 -stdin) {{ createuser }}
 </file> </file>
Zeile 150: Zeile 149:
 createpassword: 'M31nP4p4157d3r4113r83573!'   # Initialpasswort (ungecrypted!) createpassword: 'M31nP4p4157d3r4113r83573!'   # Initialpasswort (ungecrypted!)
 </file> </file>
 +
 +Da wir dort ein Passwort vorhalten, werden wir Dank unserer **[[playbook_example_07|Ansible-Vault]]**-Konfiguration diese Datei nun verschlüsseln.
 +   $ ansyble-vault encrypt ~/ansible/roles/base/vars/main.yml
  
 Die nächste Rolle, die wir konfigurieren müssen, ist die für den NTP-Daemon **''chrony''**. Auch hier kopieren wir zunächst das Default-role-template **common**. Die nächste Rolle, die wir konfigurieren müssen, ist die für den NTP-Daemon **''chrony''**. Auch hier kopieren wir zunächst das Default-role-template **common**.
Zeile 169: Zeile 171:
 <file c++ ~/ansible/roles/chrony/tasks/install.yml>--- <file c++ ~/ansible/roles/chrony/tasks/install.yml>---
   - name: "***chrony*** : Installation des Deamon '{{ daemon_name }}' (in der aktuellsten Version)"   - name: "***chrony*** : Installation des Deamon '{{ daemon_name }}' (in der aktuellsten Version)"
-    dnf: +    ansible.builtin.dnf: 
     #https://docs.ansible.com/ansible/latest/modules/dnf_module.html     #https://docs.ansible.com/ansible/latest/modules/dnf_module.html
       name: '{{ daemon_name }}'       name: '{{ daemon_name }}'
Zeile 178: Zeile 180:
 <file c++ ~/ansible/roles/chrony/tasks/config-backup.yml>--- <file c++ ~/ansible/roles/chrony/tasks/config-backup.yml>---
   - name: "***chrony*** : 1) Überprüfen ob das Backup der Konfigurationsdatei '{{ config_file }}' bereits existiert"   - name: "***chrony*** : 1) Überprüfen ob das Backup der Konfigurationsdatei '{{ config_file }}' bereits existiert"
-    stat: # https://docs.ansible.com/ansible/latest/modules/stat_module.html +    ansible.builtin.stat: # https://docs.ansible.com/ansible/latest/modules/stat_module.html 
       path: /etc/chrony.conf.orig       path: /etc/chrony.conf.orig
     register: stat_result     register: stat_result
  
   - name: "***chrony*** : 2) Von der bestehenden originalen Konfigurationsdatei '{{ config_file }}' ein Backup '{{ config_file }}'.orig erstellen"   - name: "***chrony*** : 2) Von der bestehenden originalen Konfigurationsdatei '{{ config_file }}' ein Backup '{{ config_file }}'.orig erstellen"
-    copy: # https://docs.ansible.com/ansible/latest/modules/copy_module.html+    ansible.builtin.copy: # https://docs.ansible.com/ansible/latest/modules/copy_module.html
       remote_src: yes       remote_src: yes
       src: '{{ config_file }}'       src: '{{ config_file }}'
Zeile 193: Zeile 195:
 <file yml ~/ansible/roles/chrony/tasks/configure.yml>--- <file yml ~/ansible/roles/chrony/tasks/configure.yml>---
   - name: "***chrony*** : Template Konfigurationsdatei an Ort und Stelle kopieren und Variablen setzen"   - name: "***chrony*** : Template Konfigurationsdatei an Ort und Stelle kopieren und Variablen setzen"
-    template: # https://docs.ansible.com/ansible/latest/modules/template_module.html +    ansible.builtin.template: # https://docs.ansible.com/ansible/latest/modules/template_module.html 
       src: templates/chrony-client.conf.j2        src: templates/chrony-client.conf.j2 
       dest: "{{ config_file }}"       dest: "{{ config_file }}"
Zeile 252: Zeile 254:
 <file c++ ~/ansible/roles/chrony/tasks/service.yml>--- <file c++ ~/ansible/roles/chrony/tasks/service.yml>---
   - name: "***chrony*** : Sicherstellen dass der  Daemon '{{ daemon_name }}' (beim Systemstart) gestartet wird und läuft"   - name: "***chrony*** : Sicherstellen dass der  Daemon '{{ daemon_name }}' (beim Systemstart) gestartet wird und läuft"
-    service: # https://docs.ansible.com/ansible/latest/modules/service_module.html +    ansible.builtin.service: # https://docs.ansible.com/ansible/latest/modules/service_module.html 
       name: chronyd        name: chronyd 
       state: started        state: started 
Zeile 292: Zeile 294:
 <file c++ ~/ansible/roles/www/tasks/install.yml>--- <file c++ ~/ansible/roles/www/tasks/install.yml>---
   - name: "***www*** : Installation des Deamon '{{ daemon_name }}' (in der aktuellsten Version)"   - name: "***www*** : Installation des Deamon '{{ daemon_name }}' (in der aktuellsten Version)"
-    dnf:+    ansible.builtin.dnf:
     #https://docs.ansible.com/ansible/latest/modules/dnf_module.html     #https://docs.ansible.com/ansible/latest/modules/dnf_module.html
       name: '{{ daemon_name }}'       name: '{{ daemon_name }}'
Zeile 303: Zeile 305:
 <file c++ ~/ansible/roles/www/tasks/config-backup.yml>--- <file c++ ~/ansible/roles/www/tasks/config-backup.yml>---
   - name: "***www*** : 1) Überprüfen ob das Backup der Konfigurationsdatei '{{ config_file }}' bereits existiert"   - name: "***www*** : 1) Überprüfen ob das Backup der Konfigurationsdatei '{{ config_file }}' bereits existiert"
-    stat: # https://docs.ansible.com/ansible/latest/modules/stat_module.html +    ansible.builtin.stat: # https://docs.ansible.com/ansible/latest/modules/stat_module.html 
       path: '{{ backup_file }}'       path: '{{ backup_file }}'
     register: stat_result     register: stat_result
Zeile 319: Zeile 321:
 <file c++ ~/ansible/roles/www/tasks/configure.yml>--- <file c++ ~/ansible/roles/www/tasks/configure.yml>---
   - name: "***www*** : Template Konfigurationsdatei an Ort und Stelle kopieren und Variablen setzen"   - name: "***www*** : Template Konfigurationsdatei an Ort und Stelle kopieren und Variablen setzen"
-    template: # https://docs.ansible.com/ansible/latest/modules/template_module.html +    ansible.builtin.template: # https://docs.ansible.com/ansible/latest/modules/template_module.html 
       src: templates/httpd-server.conf.j2       src: templates/httpd-server.conf.j2
       dest: "{{ config_file }}"       dest: "{{ config_file }}"
Zeile 342: Zeile 344:
 <file c++ ~/ansible/roles/www/tasks/service.yml>--- <file c++ ~/ansible/roles/www/tasks/service.yml>---
   - name: "***www*** : Sicherstellen dass der  Daemon '{{ daemon_name }}' (beim Systemstart) gestartet wird und läuft"   - name: "***www*** : Sicherstellen dass der  Daemon '{{ daemon_name }}' (beim Systemstart) gestartet wird und läuft"
-    service: # https://docs.ansible.com/ansible/latest/modules/service_module.html +    ansible.builtin.service: # https://docs.ansible.com/ansible/latest/modules/service_module.html 
       name: httpd       name: httpd
       state: started       state: started
Zeile 348: Zeile 350:
  
   - name: "***www*** : Paketfilter anpassen und Port 80 (HTTP) öffnen"   - name: "***www*** : Paketfilter anpassen und Port 80 (HTTP) öffnen"
-    firewalld: # https://docs.ansible.com/ansible/latest/modules/firewalld_module.html+    ansible.builtin.firewalld: # https://docs.ansible.com/ansible/latest/modules/firewalld_module.html
       service: http       service: http
       permanent: yes       permanent: yes
Zeile 456: Zeile 458:
 ├── site.yml ├── site.yml
 └── web.yml</code> └── web.yml</code>
- 
-<WRAP center round tip 80%> 
-Abschließend kann man sich nun berechtigter Weise die Frage stellen, warum man nun mehrere Dateien erstellt haben,um den Code und die Variablen dazu, der die Pakete installiert und die Dienste verwaltet, separat zu speichern? Wir sind so sehr leicht in der Lage zum, Beispiel Dienste in mehreren Phasen bereitstellen. In einer ersten Phase können wir so Anwendungen lediglich installieren und konfigurieren und erst in der zweiten Phase dann die Dienste dann starten.  
-Natürlich haben es wir so auch leichter Teiel des Codes wiederzu verwenden, als wenn man eine große Datei vernweden würde in der alle Einzelschritte selektiv aufgeführt sind! 
-</WRAP> 
  
  
Zeile 508: Zeile 505:
 </html> </html>
  
-==== Rollen (Beispiele) ====+===== Rollen (Beispiele) =====
   * **[[centos:rsynd_c8#automatisierter_weg_mit_hilfe_von_ansible|rsync]]**//-Server unter CentOS 8.x einrichten//   * **[[centos:rsynd_c8#automatisierter_weg_mit_hilfe_von_ansible|rsync]]**//-Server unter CentOS 8.x einrichten//
   * **[[centos:pxe_c8:tftp#automatisierter_weg_mit_hilfe_von_ansible|tftp]]**//-Server unter CentOS 8.x einrichten//   * **[[centos:pxe_c8:tftp#automatisierter_weg_mit_hilfe_von_ansible|tftp]]**//-Server unter CentOS 8.x einrichten//
 +  * **[[ffmuc-rpb4-ol#aufbau_des_ansible-playbooks_-_inhalte|Bau eines Freifunk-Offloaders auf Basis eines Raspberry 4B]]**
  
  
-:KRIT: FIXME :KRIT: +===== Fazit  und Ausblick =====
  
 +<WRAP center round info 80%>
 +Abschließend kann man sich nun berechtigter Weise die Frage stellen, warum man nun mehrere Dateien erstellt haben,um den Code und die Variablen dazu, der die Pakete installiert und die Dienste verwaltet, separat zu speichern? Wir sind so sehr leicht in der Lage zum, Beispiel Dienste in mehreren Phasen bereitstellen. In einer ersten Phase können wir so Anwendungen lediglich installieren und konfigurieren und erst in der zweiten Phase dann die Dienste dann starten. 
 +Natürlich haben es wir so auch leichter Teile des Codes wieder zu verwenden, als wenn man eine große Datei verwenden würde in der alle Einzelschritte selektiv aufgeführt sind!
 +</WRAP>
  
  
-===== lorem ipsum dolor sit amet =====+====== Links ====== 
 +  * **[[detail|zurück zum Kapitel "Ansible - Erweiterte Konfigurationsbeispiele"]] <= ** 
 +  * **=> [[playbook_example_12|weiter zum Kapitel "Ansible-Lint: Die "Ansible-Fusselbürste"]]** 
 +  * **[[start|Zurück zur "Ansible"-Übersicht]]** 
 +  * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]** 
 +  * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
  
-:KRIT: FIXME :KRIT: 
  
  
  • linux/ansible/playbook_example_11.1664032364.txt.gz
  • Zuletzt geändert: 24.09.2022 15:12.
  • von django