Je suis complètement en retard pour la fête :) J'avais besoin d'un playbook ansible qui crée plusieurs utilisateurs locaux avec des mots de passe aléatoires. Voici ce que j'ai trouvé, j'ai utilisé certains exemples du haut et je les ai regroupés avec quelques changements.
create-user-with-password.yml
---
# create_user playbook
- hosts: all
become: True
user: root
vars:
#Créer les utilisateurs suivants
users:
- test24
- test25
#groupe
group: wheel
roles:
- create-user-with-password
/roles/create-user-with-password/tasks/main.yml
- name: Générer un mot de passe pour le nouvel utilisateur
local_action: shell pwgen -s -N 1 20
register: user_password
with_items: "{{ users }}"
run_once: true
- name: Générer un mot de passe crypté
local_action: shell python -c 'import crypt; print(crypt.crypt( "{{ item.stdout }}", crypt.mksalt(crypt.METHOD_SHA512)))'
register: encrypted_user_password
with_items: "{{ user_password.results }}"
run_once: true
- name: Créer un nouvel utilisateur avec le groupe
user:
name: "{{ item }}"
groups: "{{ group }}"
shell: /bin/bash
append: yes
createhome: yes
comment: 'Créé avec ansible'
with_items:
- "{{ users }}"
register: user_created
- name: Mettre à jour les mots de passe des utilisateurs
user:
name: '{{ item.0 }}'
password: '{{ item.1.stdout }}'
with_together:
- "{{ users }}"
- "{{ encrypted_user_password.results }}"
when: user_created.changed
- name: Forcer l'utilisateur à changer de mot de passe lors de la première connexion
shell: chage -d 0 "{{ item }}"
with_items:
- "{{ users }}"
when: user_created.changed
- name: Enregistrer les mots de passe localement
become: no
local_action: copy content={{ item.stdout }} dest=./{{ item.item }}.txt
with_items: "{{ user_password.results }}"
when: user_created.changed