Я хочу убедиться, что данный пользователь всегда существует в системе, поэтому создавайте только тогда, когда он не существует
мои текущие задачи:
- 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
линия