2016-07-20 3 views
5

원격 호스트에서 파일을 만들거나 덮어 쓸 필요가 있습니다. 모듈 lineinfile 또는 blockinfile은 파일을 업데이트 할 때 유용하지만 처음부터 새로 만들거나 기존 파일을 완전히 덮어 쓰지 않는 경우 유용합니다.파일 내용을 플레이 북에 포함시킬 수 있습니까?

명백한 해결책은 copy을 사용하는 것입니다.하지만 가능한 한 독립 실행 형 플레이 북을 갖고 싶습니다. 옆에 파일이 없습니다. 제작할 파일의 내용을 게임 북에 포함시킬 수 있습니까?

어쩌면 copysrc= 매개 변수로 사용할 수있는 파일의 내용과 변수를 갖는 라인을 따라 뭔가 (내가 이것을 시도했지만이 src대로 작동하지 않습니다 로컬 파일을 예상)

+0

blockinfile과 lineinfile에는 모두 "create"라는 매개 변수가 있습니다.이 매개 변수는 처음부터 파일을 만들려면 yes로 설정할 수 있습니다. 내용을 항상 덮어 쓰고 싶다면 COPY를 사용하지 않으려면 두 가지 작업을 수행 할 수 있습니다. 첫 번째 작업은 파일이 있는지 확인하고 제거하고 두 번째 작업은 createin과 함께 lineinfile/blockinfile 모듈을 사용합니다 예 및 콘텐츠를 원하는대로 설정하십시오. –

답변

16

복사 :

이 복잡하거나 템플릿 모듈로 전환하십시오 서식 아무것도, 간단한 값입니다 :

tasks: 
    - copy: 
     content: | 
       This is some 
       not too complex 
       cotent for a file 
     dest: content.txt 

그러나 Ansible doc에 따라

.

2

template - 모듈은 목표를 달성하는 좋은 방법입니다. 내용

+0

감사합니다.하지만이 모듈에는 여전히 외부 파일이 필요합니다. 맞습니까? 그 내용이 어떻게 플레이 북에 포함될 수 있는지 보지 못했습니다 (?) – WoJ

+0

당신은 천만에요. 네, 여러 컴퓨터에서 작업을 사용하고 문제의 파일을 조정해야하는 경우, 모듈은 템플릿 인 추가 파일을 훨씬 더 편리하게 사용합니다. 또 다른 사용 사례는 작업을 두 번 이상 실행해야하는 경우입니다. – Capri90

+0

내 질문의 요점은 파일을 따로 보관하지 않고 독립 실행 형 플레이 북을 작성하는 것이 었습니다 (그렇지 않은 경우 질문에서 언급했듯이 '사본'을 사용했을 것입니다). @ konstatin의 해결책은 그 점을 다룹니다. – WoJ

관련 문제