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 [23.09.2022 15:06. ] – [Script anlegen] django |
---|
- {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/"} |
- 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 }}' |
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> |
- 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 === |
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=5 </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=6 </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> |
===== 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]]** |