Sur nos conteneurs de travail nous ne souhaitons pas que l’utilisateur aient les droits root
, nous allons, à l’aide d’un playbook Ansible, créer un nouvel utilisateur nommé worker
.
Voici un playbook pour créer l’utilisateur worker sur les machines du groupe calcul_distribue
:
Ce playbook :
- Cible uniquement les machines du groupe
calcul_distribue
- Crée l’utilisateur
worker
avec un home directory - Configure l’accès SSH avec votre clé publique
- Contient des options commentées pour donner les droits sudo si nécessaire
Exécutons ce playbook :
deployer@ubuntu-deploy:~/homelab_julia_pve_tf_ansible$ ANSIBLE_REMOTE_USER=root ansible-playbook -i dynamic-in
ventory.proxmox.yml create-worker-user.yml
PLAY [Configuration des workers] *****************************************************************************
TASK [Gathering Facts] ***************************************************************************************
ok: [ubuntu-lxc-4]
ok: [ubuntu-lxc-1]
ok: [ubuntu-lxc-5]
ok: [ubuntu-lxc-3]
ok: [ubuntu-lxc-2]
TASK [Création de l'utilisateur worker] **********************************************************************
changed: [ubuntu-lxc-4]
changed: [ubuntu-lxc-1]
changed: [ubuntu-lxc-5]
changed: [ubuntu-lxc-2]
changed: [ubuntu-lxc-3]
TASK [Configuration SSH pour l'utilisateur worker] ***********************************************************
changed: [ubuntu-lxc-1]
changed: [ubuntu-lxc-4]
changed: [ubuntu-lxc-5]
changed: [ubuntu-lxc-3]
changed: [ubuntu-lxc-2]
PLAY RECAP ***************************************************************************************************
ubuntu-lxc-1 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ubuntu-lxc-2 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ubuntu-lxc-3 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ubuntu-lxc-4 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ubuntu-lxc-5 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Vous pouvez ensuite tester l’accès :
Remarque :
La fonction lookup('file', '/home/deployer/.ssh/id_ed25519.pub')
va lire le contenu du fichier de clé publique SSH spécifié.
Par exemple, si votre fichier id_ed25519.pub contient :
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM9svI8Zy/sJ1... deployer@ubuntu-deploy
Le lookup
va récupérer cette chaîne de caractères et l’utiliser comme valeur pour la variable key
.
On peut aussi écrire la clé directement dans le playbook :
Les deux approches sont équivalentes, mais utiliser lookup
est plus maintainable car :
- La clé est gérée dans un fichier séparé
- Si la clé change, pas besoin de modifier le playbook
- C’est plus sécurisé que d’avoir la clé directement dans le code