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 12:52. ] – [Script starten] django | linux:ansible:playbook_example_08 [26.05.2024 18:57. ] – [Script anlegen] 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 275: | Zeile 284: | ||
<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 an die Hand geben: | ||
- | - Die Anmeldung an remote Hosts erfolgt mit Hilfe der **SSH** | + | - Die Anmeldung an remote Hosts erfolgt mit Hilfe der **SSH** |
- 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 **'' | ||
- | Wir wollen vertrauliche Informationen in unseren Playbooks bzw. im Inventory | + | Wir wollen vertrauliche Informationen in unseren Playbooks bzw. im Inventory |
Aus Sicht von **IT-Security** haben wir somit einen erheblicher Zugewinn an Sicherheit. Die Akzeptanzschwelle ist durch Minimierung von mehrfachen Eingaben diverser Passworte durchaus niedrig, so dass für den Admin durchaus ein Mehrwert bei der täglichen administrativen Tätigkeit ausgemacht werden kann. | Aus Sicht von **IT-Security** haben wir somit einen erheblicher Zugewinn an Sicherheit. Die Akzeptanzschwelle ist durch Minimierung von mehrfachen Eingaben diverser Passworte durchaus niedrig, so dass für den Admin durchaus ein Mehrwert bei der täglichen administrativen Tätigkeit ausgemacht werden kann. | ||
Zeile 295: | Zeile 304: | ||
- Ansible Directory Layout anlegen und mit Dummy-Inhalten versorgen. | - Ansible Directory Layout anlegen und mit Dummy-Inhalten versorgen. | ||
- Installation und Konfiguration des Passwortmanagers **'' | - Installation und Konfiguration des Passwortmanagers **'' | ||
- | - Hinterlegen des Ansible Become | + | - Hinterlegen des Ansible Become |
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 Variable **'' | ||
+ | </ | ||
=== Script anlegen === | === Script anlegen === | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
Zeile 316: | Zeile 332: | ||
# | # | ||
# 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 426: | ||
- {directory: " | - {directory: " | ||
- {directory: " | - {directory: " | ||
+ | - {directory: " | ||
- {directory: " | - {directory: " | ||
- {directory: " | - {directory: " | ||
Zeile 494: | Zeile 511: | ||
- 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 528: | ||
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 574: | ||
- 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 624: | ||
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 684: | ||
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 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, | + | 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:// |