Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:benutzer_mit_ansible_verwalten

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
tachtler:benutzer_mit_ansible_verwalten [2020/03/20 06:03] – [~/ansible/roles/00_user_mod/tasks/main.yml] klaustachtler:benutzer_mit_ansible_verwalten [2020/03/20 13:01] (aktuell) – [/home/ansible/ansible/00_user.yml] klaus
Zeile 25: Zeile 25:
 ===== 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 =====
Zeile 144: Zeile 140:
  
 :!: **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:
Zeile 259: Zeile 255:
 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:
Zeile 274: Zeile 270:
 - 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 }
Zeile 299: Zeile 295:
 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.
Zeile 311: Zeile 307:
 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.
Zeile 341: Zeile 337:
     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
Zeile 365: Zeile 379:
     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
Zeile 380: Zeile 395:
     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 }}"
Zeile 389: Zeile 405:
     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.
Zeile 441: Zeile 471:
   * ''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 }}"
Zeile 454: Zeile 525:
   * ''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
Zeile 473: Zeile 545:
     state: present     state: present
     uid: "{{ item.value.uid }}"     uid: "{{ item.value.uid }}"
 +  when: "item.value.active | bool == True"
   with_dict:   with_dict:
     - "{{ users }}"     - "{{ users }}"
Zeile 493: Zeile 566:
   * 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
Zeile 508: Zeile 582:
     state: present     state: present
     uid: "{{ item.value.uid }}"     uid: "{{ item.value.uid }}"
 +  when: "item.value.active | bool == True"
   with_dict:   with_dict:
     - "{{ users }}"     - "{{ users }}"
Zeile 522: Zeile 597:
   * 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 }}"
Zeile 531: Zeile 607:
     state: present     state: present
     exclusive: True     exclusive: True
 +  when: "item.value.active | bool == True"
   with_dict:   with_dict:
     - "{{ users }}"     - "{{ users }}"
Zeile 542: Zeile 619:
   * 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.
Zeile 550: Zeile 628:
     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 }}"
Zeile 559: Zeile 639:
 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>nameRemove users from all groups except the primary group, if set to False.
- +
-===== ~/ansible/00_user_del.yml ===== +
- +
-Die Konfigurationsdatei ''~/ansible/00_user_del.yml'' kann mit nachfolgendem Befehl **neu** erstellt werden: +
-<code> +
-$ touch ~/ansible/00_user_del.yml +
-</code> +
- +
-Der Inhalt der Konfigurationsdatei ''~/ansible/00_user_del.yml'', welche das eigentliche **Playbook** darstellt, sollte mindestens 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 +
-  # +
-- hostsall +
-  vars_files: +
-    - /home/ansible/ansible/inventories/production/host_vars/00_user.yml +
-  roles: +
-    - { role: 00_user_del } +
-</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>- hosts: all</code> +
- +
-Auf welche **hosts** das **Playbook** angewendet werden soll. +
- +
-  * <code yaml>  vars_files:</code> +
- +
-Die Definition, das das **Playbook** nachfolgende Variablen Datei verwenden soll. +
- +
-  * <code yaml>    - /home/ansible/ansible/inventories/production/host_vars/00_user.yml</code> +
- +
-Die Definition, der Variablen Datei welche das **Playbook** verwenden soll. +
- +
-  * <code yaml>  roles:</code> +
- +
-Die Definition, das das **Playbook** aus nachfolgender **role** (Rolle) besteht. +
- +
-  * <code yaml>    - { role: 00_user_del }</code> +
- +
-Welche **role** (Rolle) das **Playbook** benutzen soll. +
- +
-==== ~/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 }}"
Zeile 678: Zeile 658:
 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 =====
Zeile 752: Zeile 711:
 SSH password:  SSH password: 
 Vault password:  Vault password: 
 +
 +PLAY [all] *********************************************************************
 +
 +TASK [Gathering Facts] *********************************************************
 +ok: [192.168.1.20]
 +ok: [192.168.1.30]
 +
 +TASK [00_user : Make sure group 'wheel' does exists.] **************************
 +ok: [192.168.1.20]
 +ok: [192.168.1.30]
 +
 +TASK [00_user : Allow 'wheel' group to have password accessed sudo.] ***********
 +changed: [192.168.1.20]
 +changed: [192.168.1.30]
 +
 +TASK [00_user : Ensure user NOT exists, if NOT active.] ************************
 +skipping: [192.168.1.20] => (item=None) 
 +skipping: [192.168.1.20] => (item=None) 
 +skipping: [192.168.1.20]
 +skipping: [192.168.1.30] => (item=None) 
 +skipping: [192.168.1.30] => (item=None) 
 +skipping: [192.168.1.30]
 +
 +TASK [00_user : Ensure group NOT exists, if NOT active.] ***********************
 +skipping: [192.168.1.20] => (item=None) 
 +skipping: [192.168.1.20] => (item=None) 
 +skipping: [192.168.1.20]
 +skipping: [192.168.1.30] => (item=None) 
 +skipping: [192.168.1.30] => (item=None) 
 +skipping: [192.168.1.30]
 +
 +TASK [00_user : Ensure group exists, ONLY if active.] **************************
 +ok: [192.168.1.20] => (item=None)
 +changed: [192.168.1.30] => (item=None)
 +changed: [192.168.1.20] => (item=None)
 +changed: [192.168.1.20]
 +changed: [192.168.1.30] => (item=None)
 +changed: [192.168.1.30]
 +
 +TASK [00_user : Ansible-Host - Ensure user exists, ONLY if active.] ************
 +changed: [192.168.1.20 -> 127.0.0.1] => (item=None)
 +changed: [192.168.1.30 -> 127.0.0.1] => (item=None)
 +changed: [192.168.1.20 -> 127.0.0.1] => (item=None)
 +changed: [192.168.1.20]
 +changed: [192.168.1.30 -> 127.0.0.1] => (item=None)
 +changed: [192.168.1.30]
 +
 +TASK [00_user : Clients - Ensure user exists, ONLY if active.] *****************
 +changed: [192.168.1.20] => (item=None)
 +changed: [192.168.1.30] => (item=None)
 +changed: [192.168.1.20] => (item=None)
 +changed: [192.168.1.20]
 +changed: [192.168.1.30] => (item=None)
 +changed: [192.168.1.30]
 +
 +TASK [00_user : Set exclusive authorized key for users taken from file, ONLY if active.] ***
 +ok: [192.168.1.20] => (item=None)
 +changed: [192.168.1.30] => (item=None)
 +changed: [192.168.1.20] => (item=None)
 +changed: [192.168.1.20]
 +changed: [192.168.1.30] => (item=None)
 +changed: [192.168.1.30]
 +
 +TASK [00_user : Add users to group 'wheel' if set to True.] ********************
 +ok: [192.168.1.20] => (item=None)
 +skipping: [192.168.1.20] => (item=None) 
 +ok: [192.168.1.20]
 +changed: [192.168.1.30] => (item=None)
 +skipping: [192.168.1.30] => (item=None) 
 +changed: [192.168.1.30]
 +
 +TASK [00_user : Remove users from all groups except the primary group, if set to False.] ***
 +skipping: [192.168.1.20] => (item=None) 
 +skipping: [192.168.1.30] => (item=None) 
 +ok: [192.168.1.20] => (item=None)
 +ok: [192.168.1.20]
 +ok: [192.168.1.30] => (item=None)
 +ok: [192.168.1.30]
 +
 +PLAY RECAP *********************************************************************
 +192.168.1.20               : ok=9    changed=5    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0   
 +192.168.1.30               : ok=9    changed=6    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0
 </code> </code>
  
tachtler/benutzer_mit_ansible_verwalten.1584680580.txt.gz · Zuletzt geändert: 2020/03/20 06:03 von klaus