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
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.
Ansible role for managing user accounts and authorized ssh-keys
ansible-galaxy install 1it.users