1it.users

Rola Użytkowników dla Ansible

Ta rola umożliwia prostą obsługę kont użytkowników w systemie.
Od wersji v0.2 możliwe jest kontrolowanie, gdzie utworzyć konkretne konto użytkownika - poprzez ustawienie grupy docelowej (np. grupy inwentarza, tagu EC2 lub innej etykiety chmurowej)

Dziennik zmian

0.2.1 - 2021-11-08

Dodano:

Usunięcie grupy użytkownika
Usunięcie katalogu domowego użytkownika - delete_homedirs

0.2 - 2021-11-08

Zmiany:

target_hosts jest teraz obowiązkowe. Proszę dodać target_hosts: ['all'] do każdego wpisu użytkownika, jeśli chcesz stworzyć tego użytkownika na wszystkich hostach.

Usunięto:

users_keys został usunięty z powodu problemów z kompatybilnością. Prawdopodobnie nie był w ogóle używany.

0.1 - 2021-10-27

Poprawki:

groups powinny być pomijane domyślnie, inne domyślne wartości.

Dodano:

Pierwsza próba target_hosts (nie działa).

Zmiany:

users.state jest obowiązkowe.

Wymagania

  • Ansible 2.9.0 lub wyższy

Zmienne

Zmienne, które można przekazać do tej roli oraz krótki opis ich znaczenia:

# Lista kont użytkowników do dodania do systemu
users: []

# Domyślny shell przypisany do wszystkich kont użytkowników
users_default_shell: '/bin/bash'

# Domyślna grupa, do której będą dodawane nowe konta użytkowników
users_default_group: 'users'

# Domyślny znacznik dotyczący tworzenia unikalnej grupy dla każdego użytkownika lub umieszczania
# wszystkich użytkowników w domyślnej grupie zdefiniowanej powyżej
users_create_group_per_user: true

# Domyślny znacznik dotyczący tworzenia katalogów domowych użytkowników
users_create_homedir: true

# Domyślna lista grup (do utworzenia)
users_group_list: []

# Usunięcie katalogów domowych podczas usuwania użytkownika - domyślnie wyłączone
delete_homedirs: false

Struktura listy użytkowników

# Lista kont użytkowników do dodania do systemu
users:
  # Pierwszy użytkownik definiujący tylko wymagane atrybuty
  - username: 'johndoe'     # Nazwa użytkownika Linux
    uid: 1000               # OPCJONALNY ID użytkownika (zazwyczaj użytkownicy nie-systemowi zaczynają od 1000)
    authorized: []          # Lista publicznych kluczy SSH do dodania do konta
    target_hosts: ['dev']   # Lista grup hostów inwentarza, w których konto użytkownika ma istnieć
    state: 'present'        # WYMAGANY stan konta
  # Drugi użytkownik definiujący wszystkie dostępne atrybuty
  - username: 'janedoe'     # Nazwa użytkownika Linux
    uid: 1001               # OPCJONALNY ID użytkownika
    authorized:             # Lista publicznych kluczy SSH do dodania do konta
      - 'ssh-rsa key_string1'
      - 'ssh-ecdsa key_string2'
    name: 'Jane Doe'        # Używane jako komentarz podczas tworzenia konta
    system: false           # Określa, czy konto będzie kontem systemowym
    group: 'jdoe'           # Alternatywna główna grupa specyficzna dla użytkownika
    groups:                 # Dodatkowe grupy użytkowników
      - 'admin'
      - 'developers'
    shell: '/bin/bash'      # Domyślny shell dla konta
    home: '/home/jdoe'      # Alternatywna lokalizacja katalogu domowego dla konta
    generate_key: true      # Generuj nowy klucz SSH dla konta
    state: 'present'
  # Wycofane konta
  - username: 'bob'
    uid: 1003
    authorized: []
    target_hosts: ['dev']
    state: absent

Przykład playbooka

  1. Tworzenie użytkownika administracyjnego i użytkownika wdrożeniowego:

    ---
    # Ten playbook konfiguruje maszyny z wspólnymi użytkownikami
    
    - name: Zastosuj wspólnych użytkowników dla wszystkich węzłów
      hosts: all
      roles:
        - { role: users,
            users:
              - username: 'sa'
                authorized: ['ssh-rsa key_string']
                name: 'Administrator Systemu'
                groups: ['admin']
                target_hosts:
                  - dev
                  - stage
                  - prod
                state: 'present'
              - username: 'ansible'
                name: 'Konto usługi Ansible'
                generate_key: true
                authorized: []
                state: 'present'
                # Uwaga - target_hosts musi być zdefiniowane, w przeciwnym razie użytkownik nie zostanie utworzony.
                # Użyj ['all'], aby stworzyć użytkownika na wszystkich hostach domyślnie.
                target_hosts: ['all']
              - username: 'johndoe'
                name: 'John Doe'
                generate_key: true
                authorized: []
                target_hosts: ['dev']
                state: 'present'
          }
    

Uwaga: Tworząc zmienną zawierającą listę użytkowników do dodania lub usunięcia, najlepiej jest zacząć od group_vars/all. Spróbuj group_vars/nazwagruppy lub host_vars/nazwa_hosta, jeśli chcesz mieć użytkowników tylko na określonych maszynach. target_hosts to lista grup hostów, mogą to być również tagi w dynamicznym inwentarzu chmurowym, jak AWS/GCP/inna chmura, strefa dostępności, region, projekt.

Zależności

Licencja

MIT.

O projekcie

Ansible role for managing user accounts and authorized ssh-keys

Zainstaluj
ansible-galaxy install 1it.users
Licencja
mit
Pobrania
366
Właściciel
Site Reliability Engineer