Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision | ||
linux:ansible:playbook_example_08 [22.09.2022 13:06. ] – [Aufgabenstellung 2 - "erweiterte" Grund-/Basis-Installation für Ansible-Vault] django | linux:ansible:playbook_example_08 [01.06.2024 13:24. ] – [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: | ||
+ | |||
+ | < | ||
+ | |||
+ | Anschliessend kann man direkt **[[# | ||
+ | </ | ||
=== Script anlegen === | === Script anlegen === | ||
Zunächst müssen wir manuell einmal das Verzeichnis **'' | Zunächst müssen wir manuell einmal das Verzeichnis **'' | ||
Zeile 119: | Zeile 126: | ||
- {directory: " | - {directory: " | ||
- {directory: " | - {directory: " | ||
+ | - {directory: " | ||
- {directory: " | - {directory: " | ||
- {directory: " | - {directory: " | ||
Zeile 220: | Zeile 228: | ||
ok: [localhost] => (item={' | ok: [localhost] => (item={' | ||
ok: [localhost] => (item={' | ok: [localhost] => (item={' | ||
+ | ok: [localhost] => (item={' | ||
ok: [localhost] => (item={' | ok: [localhost] => (item={' | ||
ok: [localhost] => (item={' | ok: [localhost] => (item={' | ||
Zeile 272: | Zeile 281: | ||
- | ===== Aufgabenstellung 2 - " | + | ===== Aufgabenstellung 2 - " |
<WRAP center round info 80%> | <WRAP center round info 80%> | ||
- | Mit Hinblick auf das all umspannende Thema **Sicherheit in der IT** ist eines unserer | + | Mit Hinblick auf das all umspannende Thema **Sicherheit in der IT** ist eines unserer |
- | Folgende Sicherheitsvorkehrungen wollen wir unseren Admins an die Hand geben: | + | Folgende Sicherheitsvorkehrungen wollen wir unseren Admins |
- | - Die Anmeldung an remote Hosts erfolgt mit Hilfe der **SSH** ausschliesslich mit Schlüsseln, | + | - Die Anmeldung an remote Hosts erfolgt mit Hilfe der **SSH** ausschliesslich mit Schlüsseln, |
- Der Administrator soll beim Aufruf der Playbooks **__nur noch__** den PGP-Schlüssel durch Eingabe der zugehörigen Passphrase entsperren. Das Passwort für die Rechteerweiterung wird von Ansible aus dem Vault gelesen, genau so wie das **'' | - Der Administrator soll beim Aufruf der Playbooks **__nur noch__** den PGP-Schlüssel durch Eingabe der zugehörigen Passphrase entsperren. Das Passwort für die Rechteerweiterung wird von Ansible aus dem Vault gelesen, genau so wie das **'' | ||
Zeile 285: | Zeile 294: | ||
</ | </ | ||
- | Damit wir nun diesen Vorüberlegungen gerecht werden können, benötigen wir eine vordefinierte Grundinstallation und Konfiguration der Ansible-Umgebung für unsere(n) Admin(s). | + | Damit wir nun diesen Vorüberlegungen gerecht werden können, benötigen wir eine vordefinierte Grundinstallation und Konfiguration der Ansible-Umgebung für unsere(n) Admin(s) |
- | Mit Hilfe dieses Playbooks können alle erforderlichen Konfigurationsschritte reproduzierbar und beliebig oft abgesetzt werden. Bei Bedarf ist als also jederzeit ohne grossen Aufwand möglich den Ansible-Controll-Node neu aufzusetzen und das System für spätere Playbook-Rollouts vorzubereiten, | + | Mit Hilfe dieses Playbooks können alle erforderlichen Konfigurationsschritte reproduzierbar und beliebig oft abgesetzt werden. Bei Bedarf ist als also jederzeit ohne grossen Aufwand möglich den Ansible-Controll-Node |
Folgende Schritte sollen von dem playbook abgearbeitet werden: | Folgende Schritte sollen von dem playbook abgearbeitet werden: | ||
Zeile 296: | Zeile 305: | ||
- Installation und Konfiguration des Passwortmanagers **'' | - Installation und Konfiguration des Passwortmanagers **'' | ||
- Hinterlegen des Ansible Become Passwortes in einem Ansible-Vault. | - Hinterlegen des Ansible Become Passwortes in einem Ansible-Vault. | ||
+ | - Für die kompakte Ausgabe der Ansible Rückmeldungen soll der **[[playbook_example_12# | ||
Somit erreichen wir später bequem unser gestecktes Ziel unsere Zeit als Admin effizient zu nutzen und in einer sicheren Umgebung uns zu bewegen. | Somit erreichen wir später bequem unser gestecktes Ziel unsere Zeit als Admin effizient zu nutzen und in einer sicheren Umgebung uns zu bewegen. | ||
==== 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: | ||
+ | |||
+ | < | ||
+ | |||
+ | Anschliessend kann man, nachdem man die Variablen wie z.B. **'' | ||
+ | </ | ||
=== Script anlegen === | === Script anlegen === | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
Zeile 316: | Zeile 333: | ||
# | # | ||
# Aufruf aus dem entsprechenden Arbeits-Verzeichnis via: | # Aufruf aus dem entsprechenden Arbeits-Verzeichnis via: | ||
- | # ansible-playbook playbooks/ | + | # ansible-playbook playbooks/ |
- name: ansible_grundconfig_v2.yml | - name: ansible_grundconfig_v2.yml | ||
Zeile 410: | Zeile 427: | ||
- {directory: " | - {directory: " | ||
- {directory: " | - {directory: " | ||
+ | - {directory: " | ||
- {directory: " | - {directory: " | ||
- {directory: " | - {directory: " | ||
Zeile 494: | Zeile 512: | ||
- name: " | - name: " | ||
ansible.builtin.file: | ansible.builtin.file: | ||
- | path: '/ | + | path: '/ |
state: absent | state: absent | ||
- name: " | - name: " | ||
ansible.builtin.copy: | ansible.builtin.copy: | ||
- | dest: '/ | + | dest: '/ |
content: | | content: | | ||
+ | # Generated by Ansible on {{ ansible_date_time.date }}, do not edit manually! | ||
ansible_become_pass: | ansible_become_pass: | ||
owner: '{{ admin_user }}' | owner: '{{ admin_user }}' | ||
Zeile 510: | Zeile 529: | ||
become: true | become: true | ||
shell: | | shell: | | ||
- | ansible-vault encrypt /home/{{ admin_user }}/ | + | ansible-vault encrypt /home/{{ admin_user }}/ |
changed_when: | changed_when: | ||
+ | |||
+ | - name: " | ||
+ | ansible.builtin.file: | ||
+ | path: '/ | ||
+ | state: absent | ||
+ | |||
+ | - name: " | ||
+ | ansible.builtin.copy: | ||
+ | dest: '/ | ||
+ | content: | | ||
+ | # Generated by Ansible on {{ ansible_date_time.date }}, do not edit manually! | ||
+ | ansible_become: | ||
+ | ansible_become_method: | ||
+ | ansible_become_user: | ||
+ | ansible_become_ask_pass: | ||
+ | owner: '{{ admin_user }}' | ||
+ | group: '{{ admin_user }}' | ||
+ | mode: ' | ||
... # YML Ende</ | ... # YML Ende</ | ||
Zeile 538: | Zeile 575: | ||
- Installation des Passwort-Managers **'' | - Installation des Passwort-Managers **'' | ||
- vault-Wrapperscript im **'' | - vault-Wrapperscript im **'' | ||
- | - Store-Passwort | + | - Store-Passwort |
- Im Inventory das **'' | - Im Inventory das **'' | ||
- 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 625: | ||
ok: [localhost] => (item={' | ok: [localhost] => (item={' | ||
ok: [localhost] => (item={' | ok: [localhost] => (item={' | ||
+ | ok: [localhost] => (item={' | ||
ok: [localhost] => (item={' | ok: [localhost] => (item={' | ||
ok: [localhost] => (item={' | ok: [localhost] => (item={' | ||
Zeile 646: | Zeile 685: | ||
TASK [Ansible Become Password mit ansible-vault verschlüsseln] **************************************************************</ | TASK [Ansible Become Password mit ansible-vault verschlüsseln] **************************************************************</ | ||
<font style=" | <font style=" | ||
+ | <font style=" | ||
+ | TASK [Sicherstellen dass das File mit der Ansible-Konfiguration nicht existiert] ********************************************</ | ||
+ | <font style=" | ||
+ | <font style=" | ||
+ | TASK [Ansible Konfigurationsdatei mit den Definitionen zu privilege_escalation anlegen] *************************************</ | ||
+ | <font style=" | ||
<font style=" | <font style=" | ||
PLAY RECAP ********************************************************************************************************************</ | PLAY RECAP ********************************************************************************************************************</ | ||
- | <font style=" | + | <font style=" |
</ | </ | ||
Zeile 662: | Zeile 707: | ||
===== 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, | + | Wir haben nun Dank der beiden gezeigten Ansible-Playbooks zur Konfiguration unserer Ansible-Umgebung die Möglichkeit, |
</ | </ | ||
====== Links ====== | ====== Links ====== | ||
* **[[detail|zurück zum Kapitel " | * **[[detail|zurück zum Kapitel " | ||
- | * **=> [[playbook_example_08|weiter zum Kapitel " | + | * **=> [[playbook_example_09|weiter zum Kapitel " |
* **[[start|Zurück zur " | * **[[start|Zurück zur " | ||
* **[[wiki: | * **[[wiki: | ||
* **[[http:// | * **[[http:// |