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

두 번째 질문: 위의 항목을 찾는 동안 사전을 해시 목록으로 변경하세요(저는 사전을 유지하고 싶습니다).

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

관련 정보