Ansible - 辞書プロジェクト用のテンプレート

Ansible - 辞書プロジェクト用のテンプレート

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 }}"

おすすめ記事