Regex Ansible在给定项目列表不工作时使用正则表达式替换模块
我正在尝试查找并替换文件中的一行,尝试使用和模块Regex Ansible在给定项目列表不工作时使用正则表达式替换模块,regex,replace,automation,ansible,devops,Regex,Replace,Automation,Ansible,Devops,我正在尝试查找并替换文件中的一行,尝试使用和模块 -name:更新root-context.xml数据库详细信息 替换: 路径:“{path\u root\u context}” regexp:“{{item.regexp}}” 替换:“{item.line}” #regexp: #替换: 有以下项目: -{regexp:'',行:'} 变成:是的 成为_用户:“{{app_用户}}” 使用注释行regexp:replace:itworking 但在项目列表中传递时,它不起作用 有人能帮忙吗。
-name:更新root-context.xml数据库详细信息
替换:
路径:“{path\u root\u context}”
regexp:“{{item.regexp}}”
替换:“{item.line}”
#regexp:
#替换:
有以下项目:
-{regexp:'',行:'}
变成:是的
成为_用户:“{{app_用户}}”
使用注释行regexp:replace:itworking
但在项目列表中传递时,它不起作用
有人能帮忙吗。当我有多行要使用时,我将不得不使用item_list。任务定义的问题是您的正则表达式中有一个尾随空格,
“{item.regexp}}”
。去掉它,它应该可以正常工作。还注意到您的替换值在db\u名称
和db\u url
周围有“
。更新版本可能如下所示
- name : Update root-context.xml db details
replace:
path: "{{ path_root_context }}"
regexp: "{{ item.regexp }}"
replace: "{{ item.line }}"
with_items:
- regexp: '<property name="url" value="jdbc:mysql://([a-zA-Z]+):3306/([a-zA-Z]+)\?zeroDateTimeBehavior=convertToNull&autoReconnect=true"/>'
line: '<property name="url" value="jdbc:mysql://{{ db_url }}:3306/{{ db_name }}?zeroDateTimeBehavior=convertToNull&autoReconnect=true"/>'
非常感谢。它工作正常。但是xml模块失败,错误代码为“致命:[demoapp1]:失败!=>{“更改”:false,“msg”:“xml ansible模块需要在托管计算机上安装lxml python库”}
- name : Update root-context.xml db details
replace:
path: "{{ path_root_context }}"
regexp: "{{ item.regexp }}"
replace: "{{ item.line }}"
with_items:
- regexp: '<property name="url" value="jdbc:mysql://([a-zA-Z]+):3306/([a-zA-Z]+)\?zeroDateTimeBehavior=convertToNull&autoReconnect=true"/>'
line: '<property name="url" value="jdbc:mysql://{{ db_url }}:3306/{{ db_name }}?zeroDateTimeBehavior=convertToNull&autoReconnect=true"/>'
- name: Update root-context.xml db details
xml:
path: "{{ path_root_context }}"
xpath: /Context/property[@name='url']
attribute: value
value: "jdbc:mysql://{{ db_url }}:3306/{{ db_name }}?zeroDateTimeBehavior=convertToNull&autoReconnect=true"