Создать пользователя, если не существует в Ansible

9

Я хочу убедиться, что данный пользователь всегда существует в системе, поэтому создавать только тогда, когда он не существует

мои текущие задачи:

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

Однако возникает ошибка, когда пользователь уже существует, так как избежать ошибки, когда учетная запись пользователя уже существует?

Райан
источник
3
Пожалуйста, опубликуйте точную ошибку как вывод системы.
Дауд

Ответы:

11

Модули и, следовательно, игровые книги, подобные той, которую вы показываете, должны быть идемпотентными, чтобы иметь какое-либо применение.

Повторение одного и того же действия несколько раз для playbook и onliner не приводит к ошибкам, как и ожидалось:

$ 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

Плейбук, который я использовал:

$ 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

Или вы можете просто обмануть и добавить

ignore_errors: yes  

ниже action: userлинии

art3mis
источник
2
Это плохой выбор, и его следует использовать только в качестве ОЧЕНЬ ПОСЛЕДНЕГО курорта, и ТОЛЬКО если вы точно знаете, почему вы это делаете.
Гуто Андреолло