freehck.user-func

user-func

Le rôle user-func a pour but de configurer les utilisateurs de manière fonctionnelle : la configuration des utilisateurs sera exactement la même que celle décrite dans la configuration et garantit qu'il n'y a pas d'effets secondaires.

Description

Le rôle est écrit en supposant que le point d'entrée principal de la configuration n'est pas la machine, mais l'utilisateur. C'est-à-dire que nous ne voulons pas créer un utilisateur sur la machine, mais donner à l'utilisateur un accès à certaines machines à la place.

Vous pouvez :

  • gérer la base de données des clés publiques de vos utilisateurs
  • définir plusieurs clés pour un utilisateur
  • supprimer des utilisateurs (les répertoires personnels ne sont pas supprimés)
  • verrouiller/déverrouiller l'authentification par mot de passe
  • définir une configuration locale par hôte ou groupe d'hôtes Ansible

Variables du rôle

Les paramètres sont divisés en globaux et locaux. Si le paramètre est décrit localement pour l'hôte (dans le dictionnaire des hôtes), alors le paramètre global est pris. Si le paramètre global n'est pas décrit, la valeur par défaut est utilisée.

username : Requis, spécifie le nom d'utilisateur sur la machine.

hosts : paramètre obligatoire, définit la liste des hôtes auxquels l'utilisateur aura accès et leur configuration locale.

give_sudo : le groupe sudo/wheel est pris dans un paramètre séparé en raison de son importance exceptionnelle. Ce paramètre détermine si l'utilisateur a le droit de commencer avec sudo ou non. Peut être utilisé dans la configuration locale. Par défaut non.

password : définit le mot de passe pour l'utilisateur. Peut être utilisé dans la configuration locale.

lock_password : définit le verrouillage du mot de passe. Si défini sur oui, il n'est pas permis à l'utilisateur d'entrer le mot de passe (dans shadow, on met '*'). Peut être utilisé localement. Par défaut non.

disable_user : bloque la connexion pour l'utilisateur. Si défini sur oui, il est impossible de se connecter avec l'utilisateur donné, y compris via ssh (le shell par défaut est installé en nologin). Peut être utilisé localement. Par défaut non.

delete_user : supprime l'utilisateur (mais pas son répertoire personnel). Peut être utilisé localement. Par défaut non. À utiliser avec prudence, et il vaut mieux ne pas l'utiliser du tout - disable_user est l'option préférable.

shell : Spécifie le shell pour l'utilisateur. Peut être utilisé localement. La valeur par défaut est /bin/bash.

ssh_public_keys : liste d'objets avec les champs nom, nom complet (optionnel) et clé. C'est une base avec toutes les clés connues pour pouvoir les gérer par nom.

authorized_keys : liste de noms provenant de la base de données ssh_public_keys. Avec ce nom dans le champ nom d'un objet de la base de données, sa clé est ajoutée à .ssh/authorized_keys. Peut être utilisé localement. Par défaut [].

common_groups : un paramètre exclusivement global. Spécifie les groupes qui sont communs à tous les hôtes sur lesquels l'utilisateur sera créé. Il est recommandé de définir ["users"], par défaut []. Ne pas y ajouter sudo. Pour cela, il y a give_sudo.

groups : un paramètre exclusivement local. Spécifie les groupes qui seront ajoutés aux common_groups sur cet hôte particulier. Ne pas ajouter sudo ici. Pour cela, il y a give_sudo.

Exemple 1 (court)

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

Exemple 2 (avec toutes les options possibles)

- role: user-func
  username: freehck # requis
  give_sudo: no
  password: "monsecret"
  lock_password: no
  disable_user: no
  delete_user: no
  shell: "/bin/bash"
  common_groups: [ "users" ]
  authorized_keys: [ nom_de_clé, ... ]
  ssh_public_keys:
    - name: freehck
      fullname: Dmitrii Kashin
      key: <clé-publique>
  hosts: # requis
    - host: hôte-ou-groupe-inventaire # requis
      give_sudo: yes
      password: "monsecret"
      lock_password: no
      disable_user: no
      delete_user: no
      shell: "/bin/zsh"
      groups: [ "vboxusers" ]
      authorized_keys: [ nom_de_clé, ... ]
    - host: hôte-ou-groupe-inventaire
      ...

Licence

GPLv3+

Informations sur l'auteur

Ce rôle a été écrit par Dmitrii Kashin aka freehck

À propos du projet

manage user functionally

Installer
ansible-galaxy install freehck.user-func
Licence
Unknown
Téléchargements
6.1k
Propriétaire