Próbuję pobrać identyfikator grupy dwóch grup ( syslogi utmp) według nazwy za pomocą zadania Ansible. Do celów testowych stworzyłem podręcznik, aby pobrać informacje z samego hosta Ansible.
---
- 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
Niestety podczas uruchamiania playbooka pojawia się następujący błąd:
fatal: [hostname] => error while evaluating conditional: gid_syslog.rc != 0
Jak skonsolidować takie zadanie w sparametryzowaną formę, rejestrując osobne zmienne, po jednej na element , do późniejszego wykorzystania? Dlatego celem jest posiadanie zmiennych opartych na nazwie grupy, które mogą być następnie wykorzystane w późniejszych zadaniach.
Używam intfiltra gid_syslog.stdouti gid_utmp.stdoutwykonuję obliczenia na podstawie GID w późniejszych zadaniach.
Próbowałem także użyć gid.{{item}}i gid[item]zamiast gid_{{item}}bezskutecznie.
Następujące działa dobrze w przeciwieństwie do powyższego:
---
- 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