freehck.user-func
rol użytkownika-funk
Rola użytkownika-funk ma na celu skonfigurowanie użytkowników w sposób funkcjonalny: konfiguracja użytkowników będzie dokładnie taka sama, jak ta opisana w konfiguracji i zapewni, że nie ma działań ubocznych.
Opis
Rola została napisana w założeniu, że głównym punktem wejścia do konfiguracji nie jest maszyna, ale użytkownik. Oznacza to, że nie chcemy tworzyć użytkownika na maszynie, ale chcemy nadać użytkownikowi dostęp do określonych maszyn.
Możesz:
- zarządzać bazą danych kluczy publicznych użytkowników
- ustawiać wiele kluczy dla jednego użytkownika
- usuwać użytkowników (katalogi domowe nie są usuwane)
- blokować/odblokowywać uwierzytelnianie za pomocą hasła
- ustawiać lokalną konfigurację dla hosta lub grupy hostów ansible
Zmienne Roli
Parametry są podzielone na globalne i lokalne. Jeśli parametr jest opisany lokalnie dla hosta (w słowniku hostów), to przyjęty zostaje parametr globalny. Jeśli parametr globalny nie jest opisany, przyjmowana jest wartość domyślna.
username: Wymagany, określa nazwę użytkownika na maszynie
hosts: parametr obowiązkowy, definiuje listę hostów, do których użytkownik będzie miał dostęp oraz ich lokalną konfigurację
give_sudo: grupa sudo/wheel jest wzięta do osobnego parametru z uwagi na jej szczególne znaczenie. Ten parametr określa, czy użytkownik ma prawo korzystać z sudo, czy nie. Może być użyty w lokalnej konfiguracji. Domyślnie nie.
password: ustawia hasło dla użytkownika. Może być użyte w konfiguracji lokalnej.
lock_password: ustawia blokadę hasła. Jeśli ustawione na tak, wówczas użytkownik nie może wprowadzić hasła (w shadow ustawione jest '*'). Może być używane lokalnie. Domyślnie nie.
disable_user: blokuje logowanie dla użytkownika. Jeśli ustawione na tak, wówczas logowanie dla danego użytkownika jest niemożliwe, w tym przez ssh (domyślny shell to nologin). Może być używane lokalnie. Domyślnie nie.
delete_user: usuwa użytkownika (ale nie jego katalog domowy). Może być używane lokalnie. Domyślnie nie. Używać ostrożnie, i lepiej nie używać w ogóle - preferowaną opcją jest disable_user.
shell: Określa shell dla użytkownika. Może być używany lokalnie. Domyślnie jest to /bin/bash.
ssh_public_keys: lista obiektów z nazwą, pełną nazwą (opcjonalnie) i kluczem. Jest to baza wszystkich znanych kluczy, aby można było nimi zarządzać po nazwie.
authorized_keys: lista nazw z bazy danych ssh_public_keys. Z tą nazwą w polu nazwy obiektu w bazie jego klucz jest dodawany do .ssh/authorized_keys. Może być używane lokalnie. Domyślnie [].
common_groups: wyłącznie parametr globalny. Określa grupy, które są wspólne dla wszystkich hostów, na których użytkownik będzie tworzony. Zalecane jest ustawienie ["users"], domyślnie []. Nie dodawaj sudo do tego. W tym celu jest give_sudo.
groups: wyłącznie parametr lokalny. Określa grupy, które będą dodawane do common_groups na tym konkretnym hoście. Nie dodawaj tutaj sudo. W tym celu jest give_sudo.
Przykład 1 (krótkie)
manage-users.yml
- hosts:
- all
become: yes
become_user: root
vars_files:
- vars/ssh_public_keys.yml
vars:
common_groups: [ users ]
roles:
- tags: [ admins, freehck ]
role: user-func
username: freehck
give_sudo: yes
authorized_keys: [ freehck ]
hosts:
- host: all
- tags: [ special, jenkins ]
role: user-func
username: jenkins
authorized_keys: [ jenkins, jenkins-slave01, jenkins-slave02 ]
hosts:
- host: all
- host: jenkins-slave01
groups: [ docker ]
- tags: [ testers, tester ]
role: user-func
username: tester
authorized_keys: [ tester ]
hosts:
- host: stand01
- host: stand02
- host: db01
vars/ssh_public_keys.yml
ssh_public_keys:
- name: freehck
fullname: Dmitrii Kashin
key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPSD4/7GDGnHuFr/p/ZmDoW0RZ/3bHvoI/s5WwOpARJuqgnzj2CyfiPxkKzvCuncUq8O8FfjnAyyj7pEIV2MSEQnxzoFDfcJHRH4sw68TLlGENUvQjtTqrZQ2fyZ6Nu7dktq4A3aOxV0rVZa2oJMA1V1LFj5y9u9B4Sj1pSuY0HkAF1XHJDyBQUs8ncrBkwakqCw0wKI7aLC6tph4whFzJqs8LSnwrR6kMMyVC2xjaw8vczM1wcYVfc6lPN7tWJTH3GrjQRdEYEJo3VqInoiQ9OKb171fMrp9N1u6a88ffTDdX3Jlgm8MRSItuGkdJ9tNXke/hq7GuKmavx7sMf34d freehck
- name: jenkins
key: ...
- name: jenkins-slave01
key: ...
- name: jenkins-slave02
key: ...
Przykład 2 (ze wszystkimi możliwymi opcjami)
- role: user-func
username: freehck # wymagane
give_sudo: no
password: "mysecret"
lock_password: no
disable_user: no
delete_user: no
shell: "/bin/bash"
common_groups: [ "users" ]
authorized_keys: [ key_name, ... ]
ssh_public_keys:
- name: freehck
fullname: Dmitrii Kashin
key: <public-key>
hosts: # wymagane
- host: host-or-inventory-group # wymagane
give_sudo: yes
password: "mysecret"
lock_password: no
disable_user: no
delete_user: no
shell: "/bin/zsh"
groups: [ "vboxusers" ]
authorized_keys: [ key_name, ... ]
- host: host-or-inventory-group
...
Licencja
GPLv3+
Informacje o autorze
Ta rola została napisana przez Dmitriiego Kashina, znanego jako freehck
ansible-galaxy install freehck.user-func