syslog
Ansible操作を使用して、2つのグループ(および)のグループIDを名前で検索しようとしています。utmp
テスト目的で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
ベストアンサー1
Setfact は、以前のソリューションの宣言とは異なり、変数をサポートします。
- set_fact:
"{{ item.name }}": "{{ item.val }}"
when: item.name not in vars # this is optional. prevents overwriting vars
with_items:
- { name: test, val: myalue }
- { name: notest, val: novalue }