Crear usuario si no existe en Ansible


9

Quiero asegurarme de que un usuario determinado siempre exista en un sistema, por lo que solo crear cuando no exista

mis tareas actuales son:

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

Sin embargo, genera el error cuando ya existe un usuario, entonces, ¿cómo evitar el error cuando la cuenta de usuario ya existe?


3
Publique el error exacto como resultado del sistema.
dawud

Respuestas:


11

Los módulos y, por lo tanto, los libros de jugadas como el que muestra, deben ser idempotentes para ser de alguna utilidad.

Repetir la misma acción varias veces con un libro de jugadas y un en línea no genera ningún error, como se esperaba:

$ 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

El libro de jugadas que he usado:

$ 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

O simplemente puedes hacer trampa y agregar

ignore_errors: yes  

debajo de la action: userlínea


2
Esta es una mala elección, y solo debe usarse como EL ÚLTIMO resort, y SOLO si sabe exactamente por qué está haciendo esto.
Guto Andreollo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.