我正在尝试使用Ansible任务按名称检索两个组(syslog
和utmp
)的组ID 。为了进行测试,我创建了一个剧本来从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
不幸的是,运行剧本时出现以下错误:
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