#ansible
#ansible
Вопрос:
Я использую комбинацию модулей ansible find и replace для изменения строки в некоторых XML-файлах. Задача выполняется нормально, но строки не заменяются.
Вот как выглядит задача:
- name: Find common module config files
find:
paths: "/etc/app/common/"
patterns: "*.xml"
register: commonConfigs
- name: Set compress to false in common modules
become: yes
replace:
path: "{{item.path}}"
regexp: "<compress>true"
replace: "<compress>false"
with_items: "{{ commonConfigs.files }}"
Я подумал, что regexp
это может быть проблемой, поэтому я попытался /<compress>true/g
, но это тоже не помогло.
Я довольно новичок в ansible, поэтому прошу прощения, если я путаю здесь некоторые термины.
Спасибо за любую помощь
Редактировать:
Вот как выглядит часть xml
<appConfig>
<ui>
<compress>true</compress>
</ui>
<appConfig>
Ответ №1:
Без примера вашего XML-файла я предполагаю, что ваша искомая строка фактически не начинается с начала строки из-за отступа.
Кроме того, вы также должны очистить конец строки и записать его обратно, чтобы убедиться, что вы ничего не потеряли:
regexp: "(s <compress>)true(.*)"
replace: "1false2"
Между тем, я бы не стал полагаться на replace
внесение таких изменений в XML-файл, когда есть xml
модуль, который вы можете использовать именно для этого.