Criar usuário se não existir no Ansible

9

Quero garantir que um determinado usuário sempre exista em um sistema, portanto, crie apenas quando não existir

minhas tarefas atuais são:

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

No entanto, ele gera o erro quando um usuário já existe, então como evitar o erro quando a conta do usuário já existe?

Ryan
fonte
3
Poste o erro exato como saída pelo sistema.
dawud 28/07

Respostas:

11

Módulos e, portanto, playbooks como o que você mostra, precisam ser idempotentes para serem úteis.

Repetir a mesma ação várias vezes com um manual e um onliner não resulta em erros, conforme o esperado:

$ 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

O manual que eu usei:

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

  tasks:

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

Ou você pode simplesmente trapacear e adicionar

ignore_errors: yes  

abaixo da action: userlinha

art3mis
fonte
2
Essa é uma péssima escolha e só deve ser usada como o ÚLTIMO ÚLTIMO resort, e SOMENTE se você souber exatamente por que está fazendo isso.
Guto Andreollo