Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision |
tachtler:benutzer_mit_ansible_verwalten [2020/03/20 06:03] – [~/ansible/00_user_del.yml] klaus | tachtler:benutzer_mit_ansible_verwalten [2020/03/20 07:25] – [~/ansible/roles/00_user/tasks/main.yml] klaus |
---|
===== Aufgaben ===== | ===== Aufgaben ===== |
| |
Aufbauend auf die Installation und Einrichtung von [[https://www.ansible.com/|Ansible]], soll nachfolgende **role** (Rolle) **''00_user_add''** für | Aufbauend auf die Installation und Einrichtung von [[https://www.ansible.com/|Ansible]], soll nachfolgende **role** (Rolle) für |
- die Erstellung von Benutzern, auf dem [[https://www.ansible.com/|Ansible]]-Host und den **Clients** durchgeführt werden | - die Erstellung von Benutzern, auf dem [[https://www.ansible.com/|Ansible]]-Host und den **Clients** durchgeführt werden |
| - die Modifizierung von Benutzern, auf dem [[https://www.ansible.com/|Ansible]]-Host und den **Clients** durchgeführt werden |
- auf dem [[https://www.ansible.com/|Ansible]]-Host und **__nur__** auf dem [[https://www.ansible.com/|Ansible]]-Host sollen ''ssh-''Schlüsselpaare für die einzelnen Benutzer erstellt werden. | - auf dem [[https://www.ansible.com/|Ansible]]-Host und **__nur__** auf dem [[https://www.ansible.com/|Ansible]]-Host sollen ''ssh-''Schlüsselpaare für die einzelnen Benutzer erstellt werden. |
- die auf dem [[https://www.ansible.com/|Ansible]]-Host erstellten ''ssh-''Schlüsselpaare für die einzelnen Benutzer, sollen auf die **Clients** verteilt werden. | - die auf dem [[https://www.ansible.com/|Ansible]]-Host erstellten ''ssh-''Schlüsselpaare für die einzelnen Benutzer, sollen auf die **Clients** verteilt werden. |
- Mitglieder der Gruppe ''wheel'' haben die Möglichkeit ''root''-Rechte, durch Eingabe des jeweiligen Passworts des Benutzers, zu erlangen. | - Mitglieder der Gruppe ''wheel'' haben die Möglichkeit ''root''-Rechte, durch Eingabe des jeweiligen Passworts des Benutzers, zu erlangen. |
| - die Löschung von Benutzern, auf dem [[https://www.ansible.com/|Ansible]]-Host und den **Clients** durchgeführt werden. |
Aufbauend auf die Installation und Einrichtung von [[https://www.ansible.com/|Ansible]], soll nachfolgende **role** (Rolle) **''00_user_mod''** für | |
- die Veränderung von Benutzern auf **__allen__ Servern**, auf dem [[https://www.ansible.com/|Ansible]]-Host und den **Clients** durchgeführt werden | |
| |
Aufbauend auf die Installation und Einrichtung von [[https://www.ansible.com/|Ansible]], soll nachfolgende **role** (Rolle) **''00_user_del''** für | |
- die Löschung von Benutzern auf **__allen__ Servern**, auf dem [[https://www.ansible.com/|Ansible]]-Host und den **Clients** durchgeführt werden | |
| |
===== Konfiguration ===== | ===== Konfiguration ===== |
| |
:!: **HINWEIS** - **Eine Beschreibung zur "vault"-Erstellung ist unter nachfolgendem internen Link verfügbar:** | :!: **HINWEIS** - **Eine Beschreibung zur "vault"-Erstellung ist unter nachfolgendem internen Link verfügbar:** |
* [[tachtler:benutzer_mit_ansible_einrichten#vault_-erstellung|Benutzer mit Ansible einrichten - "vault"-Erstellung]] | * [[tachtler:benutzer_mit_ansible_verwalten#vault_-erstellung|Benutzer mit Ansible verwalten - "vault"-Erstellung]] |
| |
Die Konfigurationsdatei ''~/ansible/inventories/production/host_vars/00_user.yml'' kann mit nachfolgendem Befehl **neu** erstellt werden, falls diese nicht bereits vorhanden sein sollte: | Die Konfigurationsdatei ''~/ansible/inventories/production/host_vars/00_user.yml'' kann mit nachfolgendem Befehl **neu** erstellt werden, falls diese nicht bereits vorhanden sein sollte: |
Eigenschaft: **wheel: True** des Benutzers ''ansible'' im **dictionary** (Wörterbuch) ist eine **eigene Definition** und soll angeben, ob der Benutzer in die Gruppe ''wheel'' aufgenommen werden soll. | Eigenschaft: **wheel: True** des Benutzers ''ansible'' im **dictionary** (Wörterbuch) ist eine **eigene Definition** und soll angeben, ob der Benutzer in die Gruppe ''wheel'' aufgenommen werden soll. |
| |
===== ~/ansible/00_user.yml ===== | ==== ~/ansible/00_user.yml ==== |
| |
Die Konfigurationsdatei ''~/ansible/00_user.yml'' kann mit nachfolgendem Befehl **neu** erstellt werden: | Die Konfigurationsdatei ''~/ansible/00_user.yml'' kann mit nachfolgendem Befehl **neu** erstellt werden: |
- hosts: all | - hosts: all |
vars_files: | vars_files: |
- /home/ansible/ansible/inventories/production/host_vars/00_user.yml | - inventories/production/host_vars/00_user.yml |
roles: | roles: |
- { role: 00_user } | - { role: 00_user } |
Die Definition, das das **Playbook** nachfolgende Variablen Datei verwenden soll. | Die Definition, das das **Playbook** nachfolgende Variablen Datei verwenden soll. |
| |
* <code yaml> - /home/ansible/ansible/inventories/production/host_vars/00_user.yml</code> | * <code yaml> - inventories/production/host_vars/00_user.yml</code> |
| |
Die Definition, der Variablen Datei welche das **Playbook** verwenden soll. | Die Definition, der Variablen Datei welche das **Playbook** verwenden soll. |
Welche **role** (Rolle) das **Playbook** benutzen soll. | Welche **role** (Rolle) das **Playbook** benutzen soll. |
| |
==== ~/ansible/roles/00_user_add/tasks/main.yml ==== | ==== ~/ansible/roles/00_user/tasks/main.yml ==== |
| |
Die Verzeichnisstruktur für die **role** (Rolle) - ''00_user_add'', kann mit nachfolgendem Befehl erstellt werden: | Die Verzeichnisstruktur für die **role** (Rolle) - ''00_user'', kann mit nachfolgendem Befehl erstellt werden: |
<code> | <code> |
$ mkdir -p ~/ansible/roles/00_user_add/tasks | $ mkdir -p ~/ansible/roles/00_user/tasks |
</code> | </code> |
| |
Die Konfigurationsdatei ''~/ansible/roles/00_user_add/tasks/main.yml'' kann mit nachfolgendem Befehl **neu** erstellt werden: | Die Konfigurationsdatei ''~/ansible/roles/00_user/tasks/main.yml'' kann mit nachfolgendem Befehl **neu** erstellt werden: |
<code> | <code> |
$ touch ~/ansible/roles/00_user_add/tasks/main.yml | $ touch ~/ansible/roles/00_user/tasks/main.yml |
</code> | </code> |
| |
Der Inhalt der Konfigurationsdatei ''~/ansible/roles/00_user_add/tasks/main.yml'', welche das eigentliche **Playbook** ist, kann als **Beispiel** wie folgt aussehen: | Der Inhalt der Konfigurationsdatei ''~/ansible/roles/00_user/tasks/main.yml'', welche das eigentliche **Playbook** ist, kann als **Beispiel** wie folgt aussehen: |
<code yaml> | <code yaml> |
--- ### Add users, groups and creates ssh-key-pairs. | --- ### Add, modifies and delete users, groups and ssh-key-pairs. |
# | # |
# # ansible-playbook -i /home/ansible/ansible/inventories/production/hosts --ask-pass --ask-vault-pass /home/ansible/ansible/00_user_add.yml | # # ansible-playbook -i /home/ansible/ansible/inventories/production/hosts --ask-pass --ask-vault-pass /home/ansible/ansible/00_user.yml |
# | # |
- name: Make sure group 'wheel' does exists. | - name: Make sure group 'wheel' does exists. |
owner: root | owner: root |
validate: visudo -cf %s | validate: visudo -cf %s |
- name: Ensure group exists. | - name: Ensure user NOT exists, if NOT active. |
| user: |
| name: "{{ item.value.name }}" |
| remove: yes |
| state: absent |
| when: "item.value.active | bool != True" |
| with_dict: |
| - "{{ users }}" |
| no_log: True |
| - name: Ensure group NOT exists, if NOT active. |
| group: |
| name: "{{ item.value.group }}" |
| state: absent |
| when: "item.value.active | bool != True" |
| with_dict: |
| - "{{ users }}" |
| no_log: True |
| - name: Ensure group exists, ONLY if active. |
group: | group: |
gid: "{{ item.value.gid }}" | gid: "{{ item.value.gid }}" |
name: "{{ item.value.group }}" | name: "{{ item.value.group }}" |
state: present | state: present |
| when: "item.value.active | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
no_log: True | no_log: True |
- name: Ansible-Host - Ensure user exists. | - name: Ansible-Host - Ensure user exists, ONLY if active. |
user: | user: |
append: yes | append: yes |
state: present | state: present |
uid: "{{ item.value.uid }}" | uid: "{{ item.value.uid }}" |
| when: "item.value.active | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
delegate_to: 127.0.0.1 | delegate_to: 127.0.0.1 |
no_log: True | no_log: True |
- name: Clients - Ensure user exists. | - name: Clients - Ensure user exists, ONLY if active. |
user: | user: |
append: yes | append: yes |
state: present | state: present |
uid: "{{ item.value.uid }}" | uid: "{{ item.value.uid }}" |
| when: "item.value.active | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
no_log: True | no_log: True |
- name: Set exclusive authorized key for users taken from file. | - name: Set exclusive authorized key for users taken from file, ONLY if active. |
authorized_key: | authorized_key: |
user: "{{ item.value.name }}" | user: "{{ item.value.name }}" |
state: present | state: present |
exclusive: True | exclusive: True |
| when: "item.value.active | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
no_log: True | no_log: True |
- name: Add users to group 'wheel' if set. | - name: Add users to group 'wheel' if set to True. |
user: | user: |
append: yes | append: yes |
groups: wheel | groups: wheel |
name: "{{ item.value.name }}" | name: "{{ item.value.name }}" |
when: "item.value.wheel | bool" | when: |
| - "item.value.active | bool == True" |
| - "item.value.wheel | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
no_log: True | no_log: True |
| - name: Remove users from all groups except the primary group, if set to False. |
| user: |
| append: no |
| groups: '' |
| name: "{{ item.value.name }}" |
| when: |
| - "item.value.active | bool == True" |
| - "item.value.wheel | bool != True" |
| with_dict: |
| - "{{ users }}" |
| no_log: True |
</code> | </code> |
| |
**__Erklärungen__**: | **__Erklärungen__**: |
| |
* <code yaml>--- ### Add users, groups and creates ssh-key-pairs.</code> | * <code yaml>--- ### Add, modifies and delete users, groups and ssh-key-pairs.</code> |
| |
Hier ist der Anfang der Konfigurationsdatei im [[https://yaml.org/|YAML]]-Format, inklusive einer Kurzbeschreibung. | Hier ist der Anfang der Konfigurationsdatei im [[https://yaml.org/|YAML]]-Format, inklusive einer Kurzbeschreibung. |
* ''validate: visudo -cf %s'' - Es erfolgt eine syntaktische Überprüfung, ob die Konfigurationsdatei Fehler aufweist. | * ''validate: visudo -cf %s'' - Es erfolgt eine syntaktische Überprüfung, ob die Konfigurationsdatei Fehler aufweist. |
| |
* <code yaml>- name: Ensure group exists. | * <code yaml>- name: Ensure user NOT exists, if NOT active. |
| user: |
| name: "{{ item.value.name }}" |
| remove: yes |
| state: absent |
| when: "item.value.active | bool != True" |
| with_dict: |
| - "{{ users }}" |
| no_log: True</code> |
| |
| Es wird sicher gestellt, das ein **Benutzer** des **Benutzers** aus dem **dictionary (Wörterbuch)** - ''users'' |
| * auf **__allen__ Clients** |
| * ''name: '' - aus dem **dictionary (Wörterbuch)** - ''users'' |
| * mit dem Status ''state: absent'' bedeutet, dass der Benutzer gelöscht wird. |
| * ''when: "item.value.active | bool != True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(ungleich wahr)** ist. |
| * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
| **gelöscht** wird, **__falls dieser NICHT als aktiv gekennzeichnet ist!__** |
| |
| :!: **HINWEIS** - **Dies bewirkt, das der Benutzer __komplett gelöscht__ wird!** |
| |
| :!: **ACHTUNG** - **Alle Dateien im und das $HOME-Verzeichnis des Benutzers werden ebenfalls gelöscht !!!** |
| |
| * <code yaml>- name: Ensure group NOT exists, if NOT active. |
| group: |
| name: "{{ item.value.group }}" |
| state: absent |
| when: "item.value.active | bool != True" |
| with_dict: |
| - "{{ users }}" |
| no_log: True </code> |
| |
| Es wird sicher gestellt, das eine **Gruppe** des **Benutzers** aus dem **dictionary (Wörterbuch)** - ''users'' - mit dem |
| * ''name:'' - aus dem **dictionary (Wörterbuch)** - ''users'' |
| * mit dem Status ''state: absent'' bedeutet, dass die Gruppe gelöscht wird |
| * ''when: "item.value.active | bool != True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(ungleich wahr)** ist. |
| * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
| **gelöscht** wird, **__falls dieser NICHT als aktiv gekennzeichnet ist!__** |
| |
| :!: **HINWEIS** - **Dies bewirkt, das die Gruppe __komplett gelöscht__ wird!** |
| |
| * <code yaml>- name: Ensure group exists, ONLY if active. |
group: | group: |
gid: "{{ item.value.gid }}" | gid: "{{ item.value.gid }}" |
name: "{{ item.value.group }}" | name: "{{ item.value.group }}" |
state: present | state: present |
| when: "item.value.active | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
* ''name:'' - aus dem **dictionary (Wörterbuch)** - ''users'' | * ''name:'' - aus dem **dictionary (Wörterbuch)** - ''users'' |
* mit dem Status ''state: present'' bedeutet, dass der Benutzer angelegt wird, wenn dieser nicht bereits existiert | * mit dem Status ''state: present'' bedeutet, dass der Benutzer angelegt wird, wenn dieser nicht bereits existiert |
| * ''when: "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(wahr)** ist. |
* ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. | * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
durchgeführt wird. | durchgeführt wird. |
| |
* <code yaml>- name: Ansible-Host - Ensure user exists. | * <code yaml>- name: Ansible-Host - Ensure user exists, ONLY if active. |
user: | user: |
append: yes | append: yes |
state: present | state: present |
uid: "{{ item.value.uid }}" | uid: "{{ item.value.uid }}" |
| when: "item.value.active | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
* mit dem Status ''state: present'' bedeutet, dass der Benutzer angelegt wird, wenn dieser nicht bereits existiert | * mit dem Status ''state: present'' bedeutet, dass der Benutzer angelegt wird, wenn dieser nicht bereits existiert |
* ''uid:'' - aus dem **dictionary (Wörterbuch)** - ''users'' | * ''uid:'' - aus dem **dictionary (Wörterbuch)** - ''users'' |
| * ''when: "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(wahr)** ist. |
* ''delegate_to: 127.0.0.1'' - bewirkt, dass dies **__NUR__** auf dem [[https://www.ansible.com/|Ansible]]-**Host** ausgeführt wird und nicht auf allen anderen **Clients** auch! | * ''delegate_to: 127.0.0.1'' - bewirkt, dass dies **__NUR__** auf dem [[https://www.ansible.com/|Ansible]]-**Host** ausgeführt wird und nicht auf allen anderen **Clients** auch! |
* ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. | * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
durchgeführt wird. | durchgeführt wird. |
| |
* <code yaml>- name: Clients - Ensure user exists. | * <code yaml>- name: Clients - Ensure user exists, ONLY if active. |
user: | user: |
append: yes | append: yes |
state: present | state: present |
uid: "{{ item.value.uid }}" | uid: "{{ item.value.uid }}" |
| when: "item.value.active | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
* mit dem Status ''state: present'' bedeutet, dass die Gruppe angelegt wird, wenn diese nicht bereits existiert | * mit dem Status ''state: present'' bedeutet, dass die Gruppe angelegt wird, wenn diese nicht bereits existiert |
* ''uid:'' - aus dem **dictionary (Wörterbuch)** - ''users'' | * ''uid:'' - aus dem **dictionary (Wörterbuch)** - ''users'' |
| * ''when: "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(wahr)** ist. |
* ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. | * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
durchgeführt wird. | durchgeführt wird. |
| |
* <code yaml>- name: Set exclusive authorized key for users taken from file. | * <code yaml>- name: Set exclusive authorized key for users taken from file, ONLY if active. |
authorized_key: | authorized_key: |
user: "{{ item.value.name }}" | user: "{{ item.value.name }}" |
state: present | state: present |
exclusive: True | exclusive: True |
| when: "item.value.active | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
* mit dem Status ''state: present'' bedeutet, dass der Schlüssel hinzugefügt wird, wenn diese nicht bereits existiert | * mit dem Status ''state: present'' bedeutet, dass der Schlüssel hinzugefügt wird, wenn diese nicht bereits existiert |
* ''exclusive: True'' - bedeutet, das keine anderer öffentlicher Schlüssel in der Datei ''authorized_keys'' vorgehalten wird | * ''exclusive: True'' - bedeutet, das keine anderer öffentlicher Schlüssel in der Datei ''authorized_keys'' vorgehalten wird |
| * ''when: "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(wahr)** ist. |
* ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. | * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
durchgeführt wird. | durchgeführt wird. |
groups: wheel | groups: wheel |
name: "{{ item.value.name }}" | name: "{{ item.value.name }}" |
when: "item.value.wheel | bool" | when: |
| - "item.value.active | bool == True" |
| - "item.value.wheel | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
der Gruppe ''wheel'' hinzugefügt wird, wenn die Varibale **''wheel: True''** gesetzt ist: | der Gruppe ''wheel'' hinzugefügt wird, wenn die Varibale **''wheel: True''** gesetzt ist: |
* ''name: '' - aus dem **dictionary (Wörterbuch)** - ''users'' | * ''name: '' - aus dem **dictionary (Wörterbuch)** - ''users'' |
* ''when: "item.value.wheel | bool"'' - - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem boolischem Wert (Wahr/Unwahr). | * '' - "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(wahr)** ist. |
| * '' - "item.value.wheel | bool == True""'' - - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem boolischem Wert (wahr/unwahr) - **(wahr)** ist. |
* ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. | * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
durchgeführt wird. | durchgeführt wird. |
| |
| * <code yaml>- name: Remove users from all groups except the primary group, if set to False. |
| |
| |
==== ~/ansible/roles/00_user_del/tasks/main.yml ==== | |
| |
Die Verzeichnisstruktur für die **role** (Rolle) - ''00_user_del'', kann mit nachfolgendem Befehl erstellt werden: | |
<code> | |
$ mkdir -p ~/ansible/roles/00_user_del/tasks | |
</code> | |
| |
Die Konfigurationsdatei ''~/ansible/roles/00_user_del/tasks/main.yml'' kann mit nachfolgendem Befehl **neu** erstellt werden: | |
<code> | |
$ touch ~/ansible/roles/00_user_del/tasks/main.yml | |
</code> | |
| |
Der Inhalt der Konfigurationsdatei ''~/ansible/roles/00_user_del/tasks/main.yml'', welche das eigentliche **Playbook** ist, kann als **Beispiel** wie folgt aussehen: | |
<code yaml> | |
--- ### Delete users, groups and creates ssh-key-pairs. | |
# | |
# # ansible-playbook -i /home/ansible/ansible/inventories/production/hosts --ask-pass --ask-vault-pass /home/ansible/ansible/00_user_del.yml | |
# | |
- name: Ensure user does NOT exists, if NOT active. | |
user: | user: |
| append: no |
| groups: '' |
name: "{{ item.value.name }}" | name: "{{ item.value.name }}" |
remove: yes | when: |
state: absent | - "item.value.active | bool == True" |
when: "item.value.active | bool != True" | - "item.value.wheel | bool != True" |
with_dict: | |
- "{{ users }}" | |
no_log: True | |
- name: Ensure group does NOT exists, if NOT active. | |
group: | |
name: "{{ item.value.group }}" | |
state: absent | |
when: "item.value.active | bool != True" | |
with_dict: | |
- "{{ users }}" | |
no_log: True | |
</code> | |
| |
**__Erklärungen__**: | |
| |
* <code yaml>--- ### Delete users, groups and creates ssh-key-pairs.</code> | |
| |
Hier ist der Anfang der Konfigurationsdatei im [[https://yaml.org/|YAML]]-Format, inklusive einer Kurzbeschreibung. | |
| |
* <code yaml> # | |
# # ansible-playbook -i /home/ansible/ansible/inventories/production/hosts --ask-pass --ask-vault-pass /home/ansible/ansible/00_user_del.yml | |
#</code> | |
| |
Ein Kommentar, welcher eine Beschreibung enthält, mit welchen Parametern das **Playbook** ausgeführt werden muss. | |
| |
* <code yaml>- name: Ensure user does NOT exists, if NOT active. | |
user: | |
name: "{{ item.value.name }}" | |
remove: yes | |
state: absent | |
when: "item.value.active | bool != True" | |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
Es wird sicher gestellt, das ein **Benutzer** des **Benutzers** aus dem **dictionary (Wörterbuch)** - ''users'' | Es wird sicher gestellt, das ein **Benutzer** des **Benutzers** aus dem **dictionary (Wörterbuch)** - ''users'' |
* auf **__allen__ Clients** | * auf **__allen__ Clients** |
| von allen Gruppen, auch ''wheel'', außder dessen primärere Gruppe, entfernt wird, wenn die Varibale **''wheel: False''** gesetzt ist: |
* ''name: '' - aus dem **dictionary (Wörterbuch)** - ''users'' | * ''name: '' - aus dem **dictionary (Wörterbuch)** - ''users'' |
* mit dem Status ''state: absent'' bedeutet, dass der Benutzer gelöscht wird. | * '' - "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(wahr)** ist. |
* ''when: "item.value.protected | bool == False"'' - - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (Wahr/Unwahr). | * '' - "item.value.wheel | bool != True""'' - - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem boolischem Wert (wahr/unwahr) - **(unwahr)** ist. |
* ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. | * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
**gelöscht** wird, **__falls dieser NICHT als aktiv gekennzeichnet ist!__** | durchgeführt wird. |
| |
:!: **HINWEIS** - **Dies bewirkt, das der Benutzer __komplett gelöscht__ wird!** | |
| |
:!: **ACHTUNG** - **Alle Dateien im und das $HOME-Verzeichnis des Benutzers werden ebenfalls gelöscht !!!** | |
| |
* <code yaml>- name: Ensure group does NOT exists, if NOT active. | |
group: | |
name: "{{ item.value.group }}" | |
state: absent | |
when: "item.value.active | bool != True" | |
with_dict: | |
- "{{ users }}" | |
no_log: True</code> | |
| |
Es wird sicher gestellt, das eine **Gruppe** des **Benutzers** aus dem **dictionary (Wörterbuch)** - ''users'' - mit dem | |
* ''name:'' - aus dem **dictionary (Wörterbuch)** - ''users'' | |
* mit dem Status ''state: absent'' bedeutet, dass die Gruppe gelöscht wird | |
* ''when: "item.value.protected | bool == False"'' - - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (Wahr/Unwahr). | |
* ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. | |
**gelöscht** wird, **__falls dieser NICHT als aktiv gekennzeichnet ist!__** | |
| |
:!: **HINWEIS** - **Dies bewirkt, das die Gruppe __komplett gelöscht__ wird!** | |
| |
===== Playbook Ausführung ===== | ===== Playbook Ausführung ===== |