Saya mencoba mengambil ID grup dari dua grup ( syslog
dan utmp
) dengan nama menggunakan tugas Ansible. Untuk tujuan pengujian, saya telah membuat buku pedoman untuk mengambil informasi dari host Ansible itu sendiri.
---
- 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
Sayangnya saya mendapatkan kesalahan berikut saat menjalankan playbook:
fatal: [hostname] => error while evaluating conditional: gid_syslog.rc != 0
Bagaimana saya bisa mengkonsolidasikan tugas seperti ini ke dalam bentuk parameter saat mendaftarkan variabel terpisah , satu per item , untuk digunakan nanti? Jadi tujuannya adalah untuk memiliki variabel berdasarkan nama grup yang kemudian dapat digunakan dalam tugas selanjutnya.
Saya menggunakan int
filter gid_syslog.stdout
dan gid_utmp.stdout
untuk melakukan perhitungan berdasarkan GID di tugas selanjutnya.
Saya juga mencoba menggunakan gid.{{item}}
dan gid[item]
bukannya gid_{{item}}
tidak berhasil.
Berikut ini berfungsi dengan baik berbeda dengan yang di atas:
---
- 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
Tetapkan fakta yang mendukung variabel, yang bertentangan dengan pernyataan solusi sebelumnya
sumber