Crea utente se non esiste in Ansible


9

Voglio assicurarmi che un determinato utente esista sempre in un sistema, quindi crealo solo quando non esiste

i miei compiti attuali sono:

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

Tuttavia, genera l'errore quando esiste già un utente, quindi come evitare l'errore quando l'account utente esiste già?


3
Si prega di inviare l'errore esatto come prodotto dal sistema.
Dawud,

Risposte:


11

I moduli, e quindi i playbook come quello che mostri, devono essere idempotenti per essere utili.

La ripetizione della stessa azione più volte sia con un playbook che con un onliner non comporta alcun errore, come previsto:

$ 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

Il playbook che ho usato:

$ 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

Oppure puoi semplicemente barare e aggiungere

ignore_errors: yes  

sotto la action: userlinea


2
Questa è una scelta sbagliata e dovrebbe essere usata solo come IL MOLTO ULTIMO resort e SOLO se sai esattamente perché lo stai facendo.
Guto Andreollo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.