Я пытаюсь получить идентификатор группы двух групп ( syslog
и utmp
) по имени, используя задачу Ansible. Для тестирования я создал Playbook для получения информации от самого хоста 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
К сожалению, я получаю следующую ошибку при запуске playbook:
fatal: [hostname] => error while evaluating conditional: gid_syslog.rc != 0
Как я могу объединить задачу, подобную этой, в параметризованную форму, регистрируя отдельные переменные, по одной на элемент , для последующего использования? Таким образом, цель состоит в том, чтобы иметь переменные, основанные на имени группы, которые затем могут быть использованы в последующих задачах.
Я использую int
фильтр gid_syslog.stdout
и gid_utmp.stdout
для некоторых вычислений на основе GID в последующих задачах.
Я тоже пытался использовать gid.{{item}}
и gid[item]
вместо того, gid_{{item}}
чтобы безрезультатно.
Следующее работает отлично в отличие от вышеупомянутого:
---
- 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
Набор факт поддерживает переменные, в отличие от предыдущего решения решения
источник