1it.users
Benutzerrolle für Ansible
Diese Rolle ermöglicht die einfache Verwaltung von Benutzerkonten auf einem System.
Seit v0.2
ist es möglich, zu steuern, wo ein bestimmtes Benutzerkonto erstellt wird – durch Festlegen der Ziel-Hostgruppe (z. B. Inventargruppe, EC2-Tag oder anderes Cloud-Label).
Änderungsprotokoll
0.2.1 - 2021-11-08
Hinzugefügt:
Benutzergruppe entfernen
Benutzer-Homedatenverzeichnis entfernen - delete_homedirs
0.2 - 2021-11-08
Geändert:
target_hosts
ist jetzt Pflicht. Bitte füge target_hosts: ['all']
zu jedem Benutzereintrag hinzu, wenn du diesen Benutzer auf allen Hosts erstellen möchtest.
Entfernt:
users_keys
wurde wegen Kompatibilitätsproblemen entfernt. Wahrscheinlich wurde es überhaupt nicht verwendet.
0.1 - 2021-10-27
Fehlerbehebungen:
groups
sollte standardmäßig weggelassen werden, ebenso andere Standardwerte.
Hinzugefügt:
Erster Versuch von target_hosts
(funktioniert nicht).
Geändert:
users.state
ist Pflicht.
Anforderungen
- Ansible 2.9.0 oder höher
Variablen
Die Variablen, die an diese Rolle übergeben werden können, sowie eine kurze Beschreibung sind wie folgt:
# Die Liste der Benutzerkonten, die zum System hinzugefügt werden sollen
users: []
# Die Standard-Shell, die allen Benutzerkonten zugewiesen wird
users_default_shell: '/bin/bash'
# Die Standardgruppe, in die neue Benutzerkonten hinzugefügt werden
users_default_group: 'users'
# Das Standardflag, ob für jeden Benutzer eine eigene Gruppe erstellt werden soll oder
# ob alle Benutzer in die oben definierte Standardgruppe gehören
users_create_group_per_user: true
# Das Standardflag, ob Benutzer-Homedatenverzeichnisse erstellt werden sollen
users_create_homedir: true
# Die Standardgruppenliste (zu erstellen)
users_group_list: []
# Homedatenverzeichnisse beim Entfernen des Benutzers löschen - standardmäßig deaktiviert
delete_homedirs: false
Benutzerlistenstruktur
# Die Liste der Benutzerkonten, die zum System hinzugefügt werden sollen
users:
# Erster Benutzer, der nur erforderliche Attribute definiert
- username: 'johndoe' # Linux-Benutzername
uid: 1000 # OPTIONAL Benutzer-ID (in der Regel beginnen Nicht-Systembenutzer bei 1000)
authorized: [] # Liste der öffentlichen SSH-Schlüssel, die zum Konto hinzugefügt werden sollen
target_hosts: ['dev'] # Liste der Inventargruppe, in denen das Benutzerkonto existieren soll
state: 'present' # ERFORDERLICH Kontostatus
# Zweiter Benutzer, der alle verfügbaren Attribute definiert
- username: 'janedoe' # Linux-Benutzername
uid: 1001 # OPTIONAL Benutzer-ID (in der Regel beginnen Nicht-Systembenutzer bei 1000)
authorized: # Liste der öffentlichen SSH-Schlüssel, die zum Konto hinzugefügt werden sollen
- 'ssh-rsa key_string1'
- 'ssh-ecdsa key_string2'
name: 'Jane Doe' # Wird als Kommentar beim Erstellen des Kontos verwendet
system: false # Angabe, ob das Konto ein Systembenutzer sein wird
group: 'jdoe' # Alternativ Benutzer-spezifische Hauptgruppe
groups: # Zusätzliche Benutzergruppen
- 'admin'
- 'developers'
shell: '/bin/bash' # Standard-Shell für das Konto
home: '/home/jdoe' # Alternativer Speicherort für das Homeverzeichnis des Kontos
generate_key: true # Generiere einen neuen SSH-Schlüssel für das Konto
state: 'present'
# Abgemeldete Konten
- username: 'bob'
uid: 1003
authorized: []
target_hosts: ['dev']
state: absent
Playbook-Beispiel
Einen Systemadministrationsbenutzer und einen Bereitbenutzer erstellen:
--- # Dieses Playbook stellt Maschinen mit gemeinsamen Benutzern auf - name: Gemeinsame Benutzer auf allen Knoten anwenden hosts: all roles: - { role: users, users: - username: 'sa' authorized: ['ssh-rsa key_string'] name: 'Systemadministrator' groups: ['admin'] target_hosts: - dev - stage - prod state: 'present' - username: 'ansible' name: 'Ansible-Dienstkonto' generate_key: true authorized: [] state: 'present' # Achtung - target_hosts muss definiert werden, sonst wird der Benutzer nicht erstellt. # Verwende ['all'], um einen Benutzer standardmäßig auf allen Hosts zu erstellen. target_hosts: ['all'] - username: 'johndoe' name: 'John Doe' generate_key: true authorized: [] target_hosts: ['dev'] state: 'present' }
Hinweis: Wenn du eine Variable mit der Liste der Benutzer, die hinzugefügt oder entfernt werden sollen, erstellst, ist der beste Ausgangspunkt group_vars/all
. Versuche group_vars/groupname
oder host_vars/hostname
, wenn du nur Benutzer auf bestimmten Maschinen möchtest. target_hosts
ist eine Liste von Hostgruppen; es könnte auch ein Tag in einem dynamischen Cloud-Inventar sein, wie AWS/GCP/WhateverCloud, Verfügbarkeitszone, Region, Projekt.
Abhängigkeiten
Lizenz
MIT.
Ansible role for managing user accounts and authorized ssh-keys
ansible-galaxy install 1it.users