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_08 [22.09.2022 13:06. ] – [Aufgabenstellung 2 - "erweiterte" Grund-/Basis-Installation für Ansible-Vault] djangolinux:ansible:playbook_example_08 [25.09.2022 11:35. ] (aktuell) – [Lösung] django
Zeile 17: Zeile 17:
  
 ==== Lösung ==== ==== Lösung ====
 +<WRAP center round tip 80%>
 +Der ungeduldigen Leser kann auch direkt zur Tat schreiten und das manuelle Anlegen des Verzeichnisses und des Ansible-Scripts überspringen. Mit Folgendem Befehl erledigt man dies sozusagen auf einem Rutsch:
 +
 +<code> $ mkdir ~/ansible ; wget https://gitlab.nausch.org/django/example_8a/-/archive/main/example_8a-main.tar.gz -O - | tar -xz --strip-components=1 -C ~/ansible</code>
 +
 +Anschliessend kann man direkt **[[#script_starten|zur Ausführung schreiten]]**.
 +</WRAP>
 === Script anlegen === === Script anlegen ===
 Zunächst müssen wir manuell einmal das Verzeichnis **''~/ansible/playbooks''** in dem wir unsere Ansible-Playbooks ablegen werden auf unserer Admin-Workstation bzw. dem **A**nsible-**C**ontroll-**N**ode anlegen. Zunächst müssen wir manuell einmal das Verzeichnis **''~/ansible/playbooks''** in dem wir unsere Ansible-Playbooks ablegen werden auf unserer Admin-Workstation bzw. dem **A**nsible-**C**ontroll-**N**ode anlegen.
Zeile 119: Zeile 126:
         - {directory: "library/"}         - {directory: "library/"}
         - {directory: "module_utils/"}         - {directory: "module_utils/"}
 +        - {directory: "playbooks/"}
         - {directory: "inventories/production/group_vars/"}         - {directory: "inventories/production/group_vars/"}
         - {directory: "inventories/production/host_vars/"}         - {directory: "inventories/production/host_vars/"}
Zeile 220: Zeile 228:
 ok: [localhost] => (item={'directory': 'library/'}) ok: [localhost] => (item={'directory': 'library/'})
 ok: [localhost] => (item={'directory': 'module_utils/'}) ok: [localhost] => (item={'directory': 'module_utils/'})
 +ok: [localhost] => (item={'directory': 'playbooks/'})
 ok: [localhost] => (item={'directory': 'inventories/production/group_vars/'}) ok: [localhost] => (item={'directory': 'inventories/production/group_vars/'})
 ok: [localhost] => (item={'directory': 'inventories/production/host_vars/'}) ok: [localhost] => (item={'directory': 'inventories/production/host_vars/'})
Zeile 300: Zeile 309:
  
 ==== Lösung ==== ==== Lösung ====
 +<WRAP center round tip 90%>
 +Der ungeduldigen Leser kann auch direkt zur Tat schreiten und das manuelle Anlegen des Verzeichnisses und des Ansible-Scripts überspringen. Mit Folgendem Befehl erledigt man dies sozusagen auf einem Rutsch:
 +
 +<code> $ mkdir ~/ansible ; wget https://gitlab.nausch.org/django/example_8b/-/archive/main/example_8b-main.tar.gz -O - | tar -xz --strip-components=1 -C ~/ansible</code>
 +
 +Anschliessend kann man, nachdem man die Variable **''admin_mail''** angepasst hat, dann auch gleich direkt **[[#script_starten1|zur Ausführung schreiten]]**.
 +</WRAP>
 === Script anlegen === === Script anlegen ===
 <WRAP center round important 60%> <WRAP center round important 60%>
Zeile 410: Zeile 426:
         - {directory: "library/"}         - {directory: "library/"}
         - {directory: "module_utils/"}         - {directory: "module_utils/"}
 +        - {directory: "playbooks/"}
         - {directory: "inventories/production/group_vars/"}         - {directory: "inventories/production/group_vars/"}
         - {directory: "inventories/production/host_vars/"}         - {directory: "inventories/production/host_vars/"}
Zeile 494: Zeile 511:
     - name: "Sicherstellen dass das File für das verschlüsselte become-password noch nicht existiert"     - name: "Sicherstellen dass das File für das verschlüsselte become-password noch nicht existiert"
       ansible.builtin.file:       ansible.builtin.file:
-        path: '/home/{{ admin_user }}/ansible/inventories/production/group_vars/all/vault.yml'+        path: '/home/{{ admin_user }}/ansible/inventories/production/group_vars/all/vault'
         state: absent         state: absent
  
     - name: "Ansible Become Password für sudo Rechteerweiterung anlegen"     - name: "Ansible Become Password für sudo Rechteerweiterung anlegen"
       ansible.builtin.copy:       ansible.builtin.copy:
-        dest: '/home/{{ admin_user }}/ansible/inventories/production/group_vars/all/vault.yml'+        dest: '/home/{{ admin_user }}/ansible/inventories/production/group_vars/all/vault'
         content: |         content: |
 +          # Generated by Ansible on {{ ansible_date_time.date }}, do not edit manually!
           ansible_become_pass: {{ become_secret }}           ansible_become_pass: {{ become_secret }}
         owner: '{{ admin_user }}'         owner: '{{ admin_user }}'
Zeile 510: Zeile 528:
       become: true       become: true
       shell: |       shell: |
-        ansible-vault encrypt /home/{{ admin_user }}/ansible/inventories/production/group_vars/all/vault.yml+        ansible-vault encrypt /home/{{ admin_user }}/ansible/inventories/production/group_vars/all/vault
       changed_when: false       changed_when: false
 +
 +    - name: "Sicherstellen dass das File mit der Ansible-Konfiguration nicht existiert"
 +      ansible.builtin.file:
 +        path: '/home/{{ admin_user }}/ansible/inventories/production/group_vars/all/ansible_environment'
 +        state: absent
 +
 +    - name: "Ansible Konfigurationsdatei mit den Definitionen zu privilege_escalation anlegen"
 +      ansible.builtin.copy:
 +        dest: '/home/{{ admin_user }}/ansible/inventories/production/group_vars/all/ansible_environment'
 +        content: |
 +          # Generated by Ansible on {{ ansible_date_time.date }}, do not edit manually!
 +          ansible_become: True
 +          ansible_become_method: sudo
 +          ansible_become_user: root
 +          ansible_become_ask_pass: False
 +        owner: '{{ admin_user }}'
 +        group: '{{ admin_user }}'
 +        mode: '0644'
  
 ... # YML Ende</file> ... # YML Ende</file>
Zeile 538: Zeile 574:
   - Installation des Passwort-Managers **''pass''**   - Installation des Passwort-Managers **''pass''**
   - vault-Wrapperscript im **''bin''** Verzeichnis des Admins ablegen und ggf. das zugehörige Verzeichnis anlegen.   - vault-Wrapperscript im **''bin''** Verzeichnis des Admins ablegen und ggf. das zugehörige Verzeichnis anlegen.
-  - Store-Passwort f+r **''pass''** im zugehörigen Verzeichnis ablegen, dabei ggf. ein bereits existierendes **pass**-Verzeichnis löschen.+  - Store-Passwort für **''pass''** im zugehörigen Verzeichnis ablegen, dabei ggf. ein bereits existierendes **pass**-Verzeichnis löschen.
   - Im Inventory das **''become_password''** unter **''group_vars/all''** ablegen und dabei eine bereits existierende vault-Datei vorher entfernen.   - Im Inventory das **''become_password''** unter **''group_vars/all''** ablegen und dabei eine bereits existierende vault-Datei vorher entfernen.
   - Ansible-Vault Datei, die zuvor angelegt wurde, mit dem Ansible-Vault-Passwort sicher verschlüsseln.    - Ansible-Vault Datei, die zuvor angelegt wurde, mit dem Ansible-Vault-Passwort sicher verschlüsseln. 
 +  - Im Inventory die Definitionen zu privilege_escalation anlegen und auch hier ggf. ein bereits existierende Konfigurationsdatei vorher löschen.
  
 === Script starten === === Script starten ===
Zeile 587: Zeile 624:
 ok: [localhost] => (item={'directory': 'library/'}) ok: [localhost] => (item={'directory': 'library/'})
 ok: [localhost] => (item={'directory': 'module_utils/'}) ok: [localhost] => (item={'directory': 'module_utils/'})
 +ok: [localhost] => (item={'directory': 'playbooks/'})
 ok: [localhost] => (item={'directory': 'inventories/production/group_vars/'}) ok: [localhost] => (item={'directory': 'inventories/production/group_vars/'})
 ok: [localhost] => (item={'directory': 'inventories/production/host_vars/'}) ok: [localhost] => (item={'directory': 'inventories/production/host_vars/'})
Zeile 646: Zeile 684:
 TASK [Ansible Become Password mit ansible-vault verschlüsseln] **************************************************************</font> TASK [Ansible Become Password mit ansible-vault verschlüsseln] **************************************************************</font>
 <font style="color: rgb(25, 100, 5)">ok: [localhost]</font> <font style="color: rgb(25, 100, 5)">ok: [localhost]</font>
 +<font style="color: rgb(0, 0, 0)">
 +TASK [Sicherstellen dass das File mit der Ansible-Konfiguration nicht existiert] ********************************************</font>
 +<font style="color: rgb(25, 100, 5)">ok: [localhost]</font>
 +<font style="color: rgb(0, 0, 0)">
 +TASK [Ansible Konfigurationsdatei mit den Definitionen zu privilege_escalation anlegen] *************************************</font>
 +<font style="color: rgb(196, 160, 0)">changed: [localhost]</font>
 <font style="color: rgb(0, 0, 0)"> <font style="color: rgb(0, 0, 0)">
 PLAY RECAP ********************************************************************************************************************</font> PLAY RECAP ********************************************************************************************************************</font>
-<font style="color: rgb(196, 160, 0)">localhost</font><font style="color: rgb(0, 0, 0)">                  : </font><font style="color: rgb(25, 100, 5)">ok=14    </font><font style="color: rgb(196, 160, 0)">changed=   </font><font style="color: rgb(0, 0, 0)">unreachable=0    failed=0    </font><font style="color: rgb(43, 100, 164)">skipped=3    </font><font style="color: rgb(0, 0, 0)">rescued=0    ignored=0</font>+<font style="color: rgb(196, 160, 0)">localhost</font><font style="color: rgb(0, 0, 0)">                  : </font><font style="color: rgb(25, 100, 5)">ok=16    </font><font style="color: rgb(196, 160, 0)">changed=   </font><font style="color: rgb(0, 0, 0)">unreachable=0    failed=0    </font><font style="color: rgb(43, 100, 164)">skipped=3    </font><font style="color: rgb(0, 0, 0)">rescued=0    ignored=0</font>
  
 </pre> </pre>
Zeile 662: Zeile 706:
 ===== Fazit und Ausblick ===== ===== Fazit und Ausblick =====
 <WRAP center round info 60%> <WRAP center round info 60%>
-Wir haben nun Dank der beiden gezeigten Ansible-Playbooks zur Konfiguration unserer Ansible-Umgebung die Möglichkeit, jederzeit bei Bedarf einen weiteren Adminzu befähigen bzw. eine bestehende Umgebung erenuet auszurollen. Somit können wir nun mit **Ansible-Vault** vertrauliche Informationen in unseren Playbooks bzw. im Inventory ablegen. Diese werden als krypted **AES256** Daten abgelegt und können dadurch auch jederzeit in einem verteiltem Versionskontrollsystem wie **[[ https://git-scm.com/|git]]** vorgehalten werden. Durch Nutzung des Passwort-Manager **''pass''** wird die Handhabung soweit vereinfacht, so dass der Admin auch ohne grosse Not mehrmals hintereinander Ansible-Playbooks ausführen kann, ohne sich durch zigfache Eingabe von Passworten sich selbst das Leben allzu schwer zu machen!+Wir haben nun Dank der beiden gezeigten Ansible-Playbooks zur Konfiguration unserer Ansible-Umgebung die Möglichkeit, jederzeit bei Bedarf einen weiteren Admin zu befähigen bzw. eine bestehende Umgebung erneut auszurollen. Somit können wir nun mit **Ansible-Vault** vertrauliche Informationen in unseren Playbooks bzw. im Inventory ablegen. Diese werden als krypted **AES256** Daten abgelegt und können dadurch auch jederzeit in einem verteiltem Versionskontrollsystem wie **[[ https://git-scm.com/|git]]** vorgehalten werden. Durch Nutzung des Passwort-Manager **''pass''** wird die Handhabung soweit vereinfacht, so dass der Admin auch ohne grosse Not mehrmals hintereinander Ansible-Playbooks ausführen kann, ohne sich durch zigfache Eingabe von Passworten sich selbst das Leben allzu schwer zu machen!
 </WRAP> </WRAP>
  
 ====== Links ====== ====== Links ======
   * **[[detail|zurück zum Kapitel "Ansible - Erweiterte Konfigurationsbeispiele"]] <= **   * **[[detail|zurück zum Kapitel "Ansible - Erweiterte Konfigurationsbeispiele"]] <= **
-  * **=> [[playbook_example_08|weiter zum Kapitel "Ansible - erweitertes Konfigurationsbeispiel: Ansible mit Ansible einrichten]]**+  * **=> [[playbook_example_09|weiter zum Kapitel "Ansible - Erweiterte Konfigurationsbeispiel: Inventory]]**
   * **[[start|Zurück zur "Ansible"-Übersicht]]**   * **[[start|Zurück zur "Ansible"-Übersicht]]**
   * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**   * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**
   * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**   * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
  • linux/ansible/playbook_example_08.1663851995.txt.gz
  • Zuletzt geändert: 22.09.2022 13:06.
  • von django