我正在使用ansible查找和替换模块的组合来更改某些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>
答案 0 :(得分:2)
在没有xml文件示例的情况下,我的猜测是由于缩进,当前搜索的字符串实际上并未从行首开始。
此外,您还应该清除行尾并将其写回以确保您不会松动任何东西:
regexp: "(\s+<compress>)true(.*)"
replace: "\1false\2"
同时,当有一个xml
module可以精确用于该文件时,我不会依靠replace
在xml文件中进行此类更改。