Le but du rôle dans cette réponse est de générer un mot de passe aléatoire pour new_user_name et d'expirer immédiatement le mot de passe. Le new_user_name est requis pour changer le mot de passe lors de sa première connexion.
create_user.yml:
---
# playbook create_user
- hosts: your_host_group
become: True
user: ansible
roles:
- create_user
roles/create_user/tasks/main.yml:
---
# Générer un mot de passe aléatoire pour new_user_name et le new_user_name
# est requis pour changer son mot de passe lors de sa première connexion.
- name: Générer un mot de passe pour le nouvel utilisateur
shell: makepasswd --chars=20
register: user_password
- name: Générer un mot de passe crypté
shell: mkpasswd --method=SHA-512 {{ user_password.stdout }}
register: encrypted_user_password
- name: Créer un compte utilisateur
user: name={{ new_user_name }}
password={{ encrypted_user_password.stdout }}
state=present
append=yes
shell="/bin/bash"
update_password=always
when: new_user_name is defined and new_user_name in uids
register: user_created
- name: Forcer l'utilisateur à changer de mot de passe
shell: chage -d 0 {{ new_user_name }}
when: user_created.changed
- name: Utilisateur créé
debug: msg="Mot de passe pour {{ new_user_name }} est {{ user_password.stdout }}"
when: user_created.changed
Lorsque vous souhaitez créer un nouvel utilisateur:
ansible-playbook -i hosts.ini create_user.yml --extra-vars "new_user_name=kelvin"