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

O projekcie

manage user functionally

Zainstaluj
ansible-galaxy install freehck.user-func
Licencja
Unknown
Pobrania
6.1k
Właściciel