나는 asible을 처음 사용했지만 blockinfile 함수 를 성공적으로 사용할 수있었습니다 . 그러나 마커가 삽입되는 것을 방지하는 방법을 알 수 없습니다. 설명서를 읽었지만 설명하지는 않았습니다.
이것이 blockinfile이 쓰는 모든 파일에 나타나는 것입니다.
# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK
나는 asible을 처음 사용했지만 blockinfile 함수 를 성공적으로 사용할 수있었습니다 . 그러나 마커가 삽입되는 것을 방지하는 방법을 알 수 없습니다. 설명서를 읽었지만 설명하지는 않았습니다.
이것이 blockinfile이 쓰는 모든 파일에 나타나는 것입니다.
# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK
답변:
github 의 원래 blockinfile
모듈 을 살펴 보았습니다 .Ansible 2 전에 Ansible과 번들로 제공되지 않았습니다. 실제로 마커는 블록 을 식별하는 데 사용됩니다 .
의도 된 동작으로 보입니다. 블록 마커로 둘러싸인 모든 줄을 지정된 내용으로 바꿉니다.
즉, 마커를 제거 blockinfile
하면 더 이상 블록을 식별 할 수 없으므로 플레이 북을 실행할 때마다 모듈이 파일에 블록을 추가하게됩니다.
따라서 쓰여진 블록 전후의 마커는 모듈의 요구 사항이므로 제거 할 수 없습니다.
다시는 실행되지 않는 일회성 플레이 북인 경우 나중에 옵션을 사용 하여 lineinfile
모듈을 실행할 수 있습니다 state: absent
.
이전 답변 :
문서에 따르면 blockinfile
모듈에는 marker
옵션이 있습니다.
빈 문자열 또는 False로 설정하려고 했습니까?
blockinfile:
dest: /var/www/html/index.html
marker: ""
또는
blockinfile:
dest: /var/www/html/index.html
marker: False
나는 이런 식으로했다 ...
- name: Insert someline in somefile.sh
blockinfile:
path: /usr/share/somefile.sh
block: -sometext
insertafter: '-XX:originaltext'
marker: ""
backup: yes
- name: Remove blank lines blockinfile put in
lineinfile :
path: /usr/share/somefile.sh
state: absent
regexp: '^$'
공평하게, 나는 다음을 사용하여 여러 줄을 만들었습니다.
/programming/24334115/ansible-lineinfile-for-several-lines
감사합니다 @udondan