Назад | Перейти на главную страницу

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

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

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

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

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

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

Повторение одного и того же действия несколько раз как с 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

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

ignore_errors: yes  

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