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


11

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

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

# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK

Ответы:


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

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 удалит их (вместе со всеми остальными пустыми строками), так что будьте осторожны !!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.