사용 가능한 blockinfile 비활성화 마커


11

나는 asible을 처음 사용했지만 blockinfile 함수 를 성공적으로 사용할 수있었습니다 . 그러나 마커가 삽입되는 것을 방지하는 방법을 알 수 없습니다. 설명서를 읽었지만 설명하지는 않았습니다.

이것이 blockinfile이 쓰는 모든 파일에 나타나는 것입니다.

# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK

답변:


14

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

1
위의 불완전한 진술에 대해 죄송합니다. 누군가가 문을 두드리고 달려야했습니다. 나는 어제 이러한 아이디어를 시도했다. marker : ""-파일의 상단과 하단에 줄을 추가합니다. False :-파일의 맨 위와 맨 위에 false라는 단어를 추가합니다. 다른 아이디어가 있습니까?
Nik

2
답변을 업데이트했습니다. 마커는 실제로 gthe 모듈 자체에 필요하며 가능하더라도 제거하지 않으려는 경우가 있습니다. 자세한 내용은 업데이트 된 답변을 참조하십시오.
우동 단

0

나는 이런 식으로했다 ...

- 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: '^$'
  • 마커 ""는 파일에 빈 줄을 삽입합니다.
  • lineinfile은 (다른 모든 빈 줄과 함께) 그들을 제거하므로 조심하십시오!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.