маркер відключеного блоку-файлу відключення


11

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

Це відображається у кожному файлі, до якого записується blockinfile.

# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK

Відповіді:


14

Я переглянув оригінальний blockinfileмодуль на github - до Ansible 2 він не входив у групу Ansible. Виявляється, маркери фактично використовуються для ідентифікації блоку :

Це здається задуманою поведінкою. Він замінює всі рядки, оточені блоковими маркерами заданим вмістом.

Це означає, що якщо ви видалите маркери, blockinfileви більше не зможете ідентифікувати блок, що призведе до того, що модуль додаватиме блок у файл щоразу, коли ви запускаєте книгу.

Тож маркери до і після записаного блоку є вимогою модуля і їх неможливо видалити.

Якщо це одноразова книга, яка більше ніколи не буде виконана, ви можете запустити lineinfileмодуль із state: absentможливістю згодом.


Стара відповідь:

Згідно з документами, blockinfileмодуль має markerможливість.

Ви намагалися встановити його в порожній рядок або в False?

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

або

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

1
Вибачте за неповну заяву вище, хтось постукав у двері, і я повинен був бігти. Я спробував ці ідеї вчора. маркер: "" - додає рядок у верхній і нижній частині файлу. False: - Просто додає слово false у нижній та верхній частині файлу. Будь-які інші ідеї?
Нік

2
Я оновив свою відповідь. Маркери фактично потрібні самому модулю gthe, і навіть якщо ви могли, ви, мабуть, не хочете їх видаляти. Детальну інформацію див. У оновленій відповіді.
удандан

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.