Petit à petit, nous allons rentrer dans l’utilisation de ansible. En effet, il me semble logique de ne pas brûler les étapes pour apprendre mais surtout comprendre l’outil et ses principes.
Ansible est de plus en plus au coeur des orchestrations dans un esprit de devops. Il permet à partir de choses simples et descriptives de configurer et déployer des infrastructures mais aussi des applicatifs.
Dans cet article dédié à la formation à ansible, je vous propose de découvrir le module user. C’est un peu une base car il permet comme son nom l’indique de créer des users… et l’installation de serveurs ne se fait pas sans créer d’utilisateurs.
Ce module se base principalement sur les commandes : useradd, userdel, usermod…
Comme je le rappelle dans cette page, il prend de nombreux paramètres. Vous povuez aussi vous rapprocher de la documentation en anglais et plus complète du site de ansible.
Débutons par la mise en place et le premier run du module user
Le cas le plus simple pour commencer est de se créer un utiliseurs de démo. Pour cela il vous faut quelques serveurs (je vous invite à regarder mon article précédent pour vous créer des conteneurs docker similaires à des VM).
Ensuite bien sûr vous devez disposer aussi d’un inventaire et d’un playbook mais maintenant vous commencez à connaître.
Pour créer un user sans droits ni contraintes particulières, nous pouvons commencer par cette tâche.
- name: création de xavki user: name: xavki state: present password: "{{ 'password' | password_hash('sha512') }}"
Nous utilisons bien “user” et lui passons 3 paramètres :
- le nom : celui de l’utilisateur que nous voulons créer
- le statut : est-ce que l’on souhaite qu’il soit créé ou supprimé (present/absent en anglais pour ansible)
- le password : petite particularité c’est que celui-ci ne peut pas être complètement en clair (en théorie il ne doit pas l’être du tout mais nous n’avons pas encore vu dans cette formation ansible-vault). Donc nous utilisons le filtre jinja password_hash et lui précisons que nous voulons un hash de type sha512.
Et bien sûr nous lançons notre playbook :
ansible-playbook -i 00_inventory.yml playbook.yml
Ajoutons quelques paramètres pour mieux configurer notre utilisateur
Bien c’est un premier pas et vous pouvez vérifier cela en vous connectant sur une machine distante avec une simple commande comme :
id xavki
Mais admettons que nous souhaitions ajouter ce user à un groupe existant. On parle bien ici de l’ajouter et non pas d’écraser son groupe. Dans notre exemple, ajoutons-le au groupe sudo pour plus de liberté ;).
- name: création de xavki user: name: xavki state: present groups: sudo append: yes password: "{{ 'password' | password_hash('sha512') }}"
On ajoute donc le paramètre group et le paramètre append à yes. Ce dernier assure que nous ajoutions bien le groupe au user et pas l’écrasement de son appartenance aux autres groupes.
Cependant, nous aimons associer une clef ssh à un utilisteur. Pour cela ansible permet différentes situations. Ici nous allons l’ajouter et voir le retour de la tâche de création user grâce à un debug.
- name: création du user xavki user: name: xavki state: present generate_ssh_key: yes uid: 1200 groups: sudo append: yes password: "{{ 'password' | password_hash('sha512') }}" register: mavar - name: debug debug: msg: "{{ mavar }}"
Et vous pouvez constater dans la sortie que l’on peut récupérer les éléments relatifs à la clef SSH.
Et nous pouvons bien lui ajouter un shell on retrouve les options de useradd en ligne de commande.
- name: création du user xavki user: name: xavki state: present shell: /sbin/nologin generate_ssh_key: yes uid: 1200 groups: sudo append: yes password: "{{ 'password' | password_hash('sha512') }}" password_lock: yes
Remarquez que là nous ajoutons un password_lock. Cela permet de conserver l’utilisateur tout en l’empêchant de se connecter.
Et enfin, vous l’avez deviné, nous allons supprimer cet utilisateur en passant simplement le nom et le status “absent”.
- name: création du user xavki user: name: xavki state: absent
Et voilà nous venons de nous former à l’utilisation du module user de ansible.