Ich versuche, die Gruppen-ID von zwei Gruppen ( syslog
und utmp
) nach Namen mithilfe einer Ansible-Aufgabe abzurufen . Zu Testzwecken habe ich ein Playbook erstellt, um die Informationen vom Ansible-Host selbst abzurufen.
---
- name: My playbook
hosts: enabled
sudo: True
connection: local
gather_facts: False
tasks:
- name: Determine GIDs
shell: "getent group {{ item }} | cut -d : -f 3"
register: gid_{{item}}
failed_when: gid_{{item}}.rc != 0
changed_when: false
with_items:
- syslog
- utmp
Leider wird beim Ausführen des Playbooks folgende Fehlermeldung angezeigt:
fatal: [hostname] => error while evaluating conditional: gid_syslog.rc != 0
Wie kann ich eine Aufgabe wie diese in einer parametrisierten Form zusammenfassen, während ich separate Variablen, eine pro Element , für die spätere Verwendung registriere ? Das Ziel ist es also, Variablen basierend auf dem Gruppennamen zu haben, die dann in späteren Aufgaben verwendet werden können.
Ich verwende den int
Filter für gid_syslog.stdout
und gid_utmp.stdout
um in späteren Aufgaben einige Berechnungen basierend auf der GID durchzuführen.
Ich habe auch versucht, gid.{{item}}
und gid[item]
statt gid_{{item}}
ohne Erfolg.
Folgendes funktioniert im Gegensatz zu den oben genannten gut:
---
- name: My playbook
hosts: enabled
sudo: True
connection: local
gather_facts: False
tasks:
- name: Determine syslog GID
shell: "getent group syslog | cut -d : -f 3"
register: gid_syslog
failed_when: gid_syslog.rc != 0
changed_when: false
- name: Determine utmp GID
shell: "getent group utmp | cut -d : -f 3"
register: gid_utmp
failed_when: gid_utmp.rc != 0
changed_when: false
Set fact unterstützt Variablen im Gegensatz zur Aussage der vorherigen Lösung
quelle