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&amp;autoReconnect=true"/>'
      line: '<property name="url" value="jdbc:mysql://{{ db_url }}:3306/{{ db_name }}?zeroDateTimeBehavior=convertToNull&amp;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&amp;autoReconnect=true"/>'
      line: '<property name="url" value="jdbc:mysql://{{ db_url }}:3306/{{ db_name }}?zeroDateTimeBehavior=convertToNull&amp;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&amp;autoReconnect=true"