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
두 번째 질문: 위의 항목을 찾는 동안 사전을 해시 목록으로 변경하세요(저는 사전을 유지하고 싶습니다).
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로 시작하는데 이해하기 쉽지 않습니다. 특히 두 번째 경우는 더욱 그렇습니다.
답변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 }}"