Отключить маркер блокировки блочного файла

11

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

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

# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK
Nik
источник

Ответы:

14

Я посмотрел на оригинальный 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
udondan
источник
1
Извините за неполное утверждение выше, кто-то постучал в дверь, и мне пришлось бежать. Я попробовал эти идеи вчера. marker: "" - добавляет строку вверху и внизу файла. False: - Просто добавляет слово false внизу и вверху файла. Есть еще идеи?
Ник
2
Я обновил свой ответ. Маркеры фактически требуются самим модулем, и даже если вы можете, вы, вероятно, не хотите их удалять. Смотрите обновленный ответ для деталей.
Удондан
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 удалит их (вместе со всеми остальными пустыми строками), так что будьте осторожны !!
user489843
источник