marcador de bloqueio de arquivo de bloqueio ansible


11

Eu sou novo no ansible, no entanto, consegui usar com êxito a função blockinfile . No entanto, não consigo descobrir como impedir a inserção de marcadores. Eu li a documentação, mas ela não parecia descrevê-la.

É isso que aparece em todos os arquivos nos quais o blockinfile grava.

# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK

Respostas:


14

Eu dei uma olhada no blockinfilemódulo original no github - antes do Ansible 2, ele não era fornecido com o Ansible. Acontece que os marcadores são realmente usados ​​para identificar o bloco :

Esse parece ser o comportamento pretendido. Ele substitui todas as linhas cercadas pelos marcadores de bloco pelo conteúdo especificado.

Isso significa que, se você remover os marcadores, blockinfilenão será mais capaz de identificar o bloco, o que resultará no módulo para adicionar o bloco ao arquivo toda vez que você executar o manual.

Portanto, os marcadores antes e depois do bloco escrito são um requisito do módulo e não podem ser removidos.

Se este for um manual único que nunca será executado novamente, você poderá executar o lineinfilemódulo com a state: absentopção posteriormente.


Resposta antiga:

De acordo com os documentos, o blockinfilemódulo tem uma markeropção.

Você tentou configurá-lo para uma string vazia ou False?

blockinfile:
    dest: /var/www/html/index.html
    marker: ""

ou

blockinfile:
    dest: /var/www/html/index.html
    marker: False

1
Desculpe pela declaração incompleta acima, alguém bateu na porta e eu tive que correr. Eu tentei essas idéias ontem. marker: "" - Adiciona uma linha na parte superior e inferior do arquivo. Falso: - Apenas adiciona a palavra falso na parte inferior e superior do arquivo. Alguma outra ideia?
Nik

2
Eu atualizei minha resposta. Na verdade, os marcadores são exigidos pelo próprio módulo e, mesmo que você possa, provavelmente não deseja removê-los. Consulte a resposta atualizada para obter detalhes.
Udondan

0

eu fiz algo assim ...

- 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: '^$'
  • marcador "" irá inserir linhas em branco no arquivo
  • lineinfile irá removê-los (junto com todas as outras linhas em branco), então cuidado!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.