Я новичок в анзибле, однако мне удалось успешно использовать 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: '^$'
Честно говоря, в итоге я использовал следующее, чтобы создать несколько строк.
https://stackoverflow.com/questions/24334115/ansible-lineinfile-for-several-lines
Спасибо @udondan