Ansible 1.6.6
컴퓨터를 프로비저닝 하는 데 사용 하고 있습니다.
내 플레이 북에 Jinja2 템플릿에서 대상 파일을 생성 하는 템플릿 작업 이 있습니다 .
tasks:
- template: src=somefile.j2 dest=/etc/somefile.conf
somefile.conf
이미 존재하는 경우 교체하고 싶지 않습니다 . Ansible로 가능합니까? 그렇다면 어떻게?
답변
stat를 사용하여 파일 존재를 확인한 다음 파일이없는 경우에만 템플릿을 사용할 수 있습니다.
tasks:
- stat: path=/etc/somefile.conf
register: st
- template: src=somefile.j2 dest=/etc/somefile.conf
when: not st.stat.exists
답변
템플릿 모듈 의 force 매개 변수를 사용할 수 있습니다 .
tasks:
- template: src=somefile.j2 dest=/etc/somefile.conf force=no
또는 작업 이름 지정 😉
tasks:
- name: Create file from template if it doesn't exist already.
template:
src: somefile.j2
dest:/etc/somefile.conf
force: no
로부터 Ansible 템플릿 모듈 문서 :
force : 기본값은 yes이며 컨텐츠가 소스와 다른 경우 원격 파일을 대체합니다. 그렇지 않으면 대상이없는 경우에만 파일이 전송됩니다.
다른 답변 stat
은 force 매개 변수가 작성된 후에 추가 되었으므로 사용 됩니다.
답변
먼저 대상 파일이 존재하는지 확인한 후 결과 출력에 따라 결정을 내릴 수 있습니다.
tasks:
- name: Check that the somefile.conf exists
stat:
path: /etc/somefile.conf
register: stat_result
- name: Copy the template, if it doesnt exist already
template:
src: somefile.j2
dest: /etc/somefile.conf
when: stat_result.stat.exists == False
답변
나에 따르면, 가장 쉬운 해결책은 템플릿 모듈에서 “force = no”속성을 사용하는 것입니다