[server] 가능 : 대상 파일이없는 경우에만 템플릿 복사

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이며 컨텐츠가 소스와 다른 경우 원격 파일을 대체합니다. 그렇지 않으면 대상이없는 경우에만 파일이 전송됩니다.

다른 답변 statforce 매개 변수가 작성된 후에 추가 되었으므로 사용 됩니다.


답변

먼저 대상 파일이 존재하는지 확인한 후 결과 출력에 따라 결정을 내릴 수 있습니다.

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”속성을 사용하는 것입니다


답변