Ansible: Hinzufügen Unix-Gruppe Benutzer nur, wenn die Gruppe vorhanden ist
Ich bin mit Ansible zum hinzufügen eines Benutzers zu einer Vielzahl von Servern. Einige Server haben verschiedene UNIX-Gruppen definiert. Ich würde gerne einen Weg finden, für Ansible zu prüfen, die Existenz einer Gruppe, die ich geben, und wenn die Gruppe vorhanden ist, hinzufügen eines Benutzers sekundären Gruppen-Liste (aber ignoriert die Anweisung, wenn die Gruppe nicht existiert).
Irgendwelche Gedanken auf, wie ich könnte dies tun, mit Ansible?
Hier ist mein Ausgangspunkt.
Befehl
ansible-playbook -i 'localhost,' -c local ansible_user.yml
ansible_user.yml
---
- hosts: all
user: root
become: yes
vars:
password: "!"
user: testa
tasks:
- name: add user
user: name="{{user}}"
state=present
password="{{password}}"
shell=/bin/bash
append=yes
comment="test User"
Aktualisiert: basiert auf der Lösung von @udondan, ich war in der Lage, diese arbeiten mit den folgenden zusätzlichen Aufgaben.
- name: Check if user exists
shell: /usr/bin/getent group | awk -F":" '{print $1}'
register: etc_groups
- name: Add secondary Groups to user
user: name="{{user}}" groups="{{item}}" append=yes
when: '"{{item}}" in etc_groups.stdout_lines'
with_items:
- sudo
- wheel
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie etwas zu identifizieren, die verschiedene host-Typen?
Wenn nicht, müssen Sie zunächst überprüfen, welche Gruppen existieren, die auf diesem host. Sie können dies tun mit dem Befehl
groups | tr -s " " "\012"
die Ausgabe in eine Gruppe pro Zeile.Können Sie diese als separate Aufgabe etwa so:
Eingetragene Ergebnis kann dann verwendet werden, später, wenn Sie möchten, fügen Sie den Benutzer der Gruppe
getent group
wäre der standard-Befehl, um die Gruppen auf dem system. (getent group | cut -d: -f1
nur für den Gruppennamen)Den getent Modul kann verwendet werden, um lese - /etc/group