Créer un utilisateur s'il n'existe pas dans Ansible


9

Je veux m'assurer qu'un utilisateur donné existe toujours dans un système, donc ne créez que lorsqu'il n'existe pas

mes tâches actuelles sont:

- name: Create default user
action: user name={{ user }} groups={{ group }}  state=present

Cependant, cela déclenche l'erreur lorsqu'un utilisateur existe déjà, alors comment éviter l'erreur lorsque le compte d'utilisateur existe déjà?


3
Veuillez publier l'erreur exacte en tant que sortie par le système.
dawud

Réponses:


11

Les modules, et donc les playbooks comme celui que vous montrez, doivent être idempotents pour être utiles.

La répétition de la même action plusieurs fois avec un playbook et un onliner ne provoque aucune erreur, comme prévu:

$ ansible 10.0.0.2 -u dawud -m user -a "name=sysadm group=1000 state=present"
10.0.0.2 | success >> {
    "append": false,
    "changed": false,
    "comment": "System Administrator,,,",
    "group": 1000,
    "home": "/home/sysadm",
    "name": "sysadm",
    "shell": "/bin/bash-static",
    "state": "present",
    "uid": 1000
}


$ ansible-playbook ansible/sample.yml -u dawud -K
sudo password:

PLAY [10.0.0.2] *********************

GATHERING FACTS *********************
ok: [10.0.0.2]

TASK: [create admin user] *********************
ok: [10.0.0.2]

PLAY RECAP *********************
10.0.0.2                       : ok=2    changed=0    unreachable=0    failed=0

Le playbook que j'ai utilisé:

$ cat ansible/sample.yml
- hosts: 10.0.0.2
  sudo: yes

  tasks:

    - name: create admin user
      action: user name=sysadm group=1000 state=present

0

Ou vous pouvez simplement tricher et ajouter

ignore_errors: yes  

sous la action: userligne


2
C'est un mauvais choix et ne doit être utilisé que comme le TRÈS DERNIER resort, et UNIQUEMENT si vous savez exactement pourquoi vous faites cela.
Guto Andreollo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.