Ansible - 辞書項目 1 のテンプレート: テンプレートからファイルを生成するタスクを作成しようとしています。
NODES:
node1:
server: host1
script: manage1
node2:
server: host2
script: manage2
node3:
server: host3
- name: Create files from templates
template:
src: "templ.j2"
dest: "/etc/init.d/{{item.key}}"
loop: "{{NODES|dict2items}}"
when: "{{ 'script' in item.value }}"
上記のファイルを作成します。
/etc/init.d/node1
/etc/init.d/node2
次の方法を見つけることができません。
/etc/init.d/manage1
/etc/init.d/manage2
2番目の質問:上記の項目を探している間に辞書をハッシュリストに変更します(私は辞書を維持したい)。
NODES:
- node1:
server: host1
script: manage1
- node2:
server: host2
script: manage2
上記のリストでは、単純なファイル生成がうまくいきます。
- name: Create files
file:
path: "/etc/init.d/{{item.script}}"
state: touch
with_items: "{{ NODES }}"
ただし、テンプレートからアナログファイルを生成すると、次のことは行われません。
- name: Create files template
file:
dest: "/etc/init.d/{{item.script}}"
src: templ.j2
with_items: "{{ NODES }}"
Ansibleで始めるのがわかりにくいです。特に2番目のケースはさらにそうです。
ベストアンサー1
質問1:「得る方法を見つけられない」
/etc/init.d/manage1
/etc/init.d/manage2
ㅏ:
使用item.value.script
- name: Create files from templates
template:
src: "templ.j2"
dest: "/etc/init.d/{{ item.value.script }}"
loop: "{{ NODES|dict2items }}"
when: "{{ 'script' in item.value }}"