如果 Ansible 中不存在则创建用户

Rya*_*yan 9 ansible

我想确保给定的用户始终存在于系统中,因此只有在它不存在时才创建

我目前的任务是:

- name: Create default user
action: user name={{ user }} groups={{ group }}  state=present
Run Code Online (Sandbox Code Playgroud)

但是,当用户已经存在时它会引发错误,那么当用户帐户已经存在时如何避免错误?

daw*_*wud 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
Run Code Online (Sandbox Code Playgroud)

我用过的剧本:

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

  tasks:

    - name: create admin user
      action: user name=sysadm group=1000 state=present
Run Code Online (Sandbox Code Playgroud)