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

  1. 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.

Über das Projekt

Ansible role for managing user accounts and authorized ssh-keys

Installieren
ansible-galaxy install 1it.users
GitHub Repository
Lizenz
mit
Downloads
366
Besitzer
Site Reliability Engineer