Назад | Перейти на главную страницу

ansible blockinfile отключить маркер

Я новичок в анзибле, однако мне удалось успешно использовать blockinfile функция. Однако я не могу понять, как предотвратить вставку маркеров. Я прочитал документацию, но она не описывала это.

Это то, что отображается в каждом файле, в который записывается файл blockinfile.

# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK

Я посмотрел оригинал blockinfile модуль на github - до Ansible 2 он не был связан с Ansible. Оказывается, на самом деле маркеры используются для определить блок:

Это кажется намеренным поведением. Он заменяет все строки, окруженные маркерами блоков, указанным содержимым.

Это означает, что если вы удалите маркеры, blockinfile больше не сможет идентифицировать блок, что приведет к тому, что модуль будет добавлять блок в файл каждый раз, когда вы запускаете playbook.

Таким образом, маркеры до и после письменного блока являются требованием модуля и не могут быть удалены.

Если это одноразовый сценарий, который никогда не будет выполняться снова, вы можете запустить 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: '^$'
  • маркер "" вставит в файл пустые строки
  • lineinfile удалит их (вместе со всеми другими пустыми строками), так что будьте осторожны !!

Честно говоря, в итоге я использовал следующее, чтобы создать несколько строк.

https://stackoverflow.com/questions/24334115/ansible-lineinfile-for-several-lines

Спасибо @udondan