Benutzer erstellen, falls nicht in Ansible vorhanden


9

Ich möchte sicherstellen, dass ein bestimmter Benutzer immer in einem System vorhanden ist. Erstellen Sie ihn also nur, wenn er nicht vorhanden ist

Meine aktuellen Aufgaben sind:

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

Der Fehler wird jedoch ausgelöst, wenn bereits ein Benutzer vorhanden ist. Wie kann der Fehler vermieden werden, wenn das Benutzerkonto bereits vorhanden ist?


3
Bitte geben Sie den genauen Fehler als vom System ausgegeben an.
Dawud

Antworten:


11

Module und daher Playbooks wie das von Ihnen gezeigte müssen idempotent sein, um von Nutzen zu sein.

Das mehrmalige Wiederholen derselben Aktion sowohl mit einem Playbook als auch mit einem Onliner führt erwartungsgemäß nicht zu Fehlern:

$ 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

Das Spielbuch, das ich verwendet habe:

$ 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

Oder Sie können einfach schummeln und hinzufügen

ignore_errors: yes  

unter der action: userLinie


2
Dies ist eine schlechte Wahl und sollte nur als DAS SEHR LETZTE Resort verwendet werden, und NUR, wenn Sie genau wissen, warum Sie dies tun.
Guto Andreollo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.