Проблема с определением вашей задачи заключается в том, что в вашем регулярном выражении есть пробел, "{{ item.regexp }} "
. Удалите это, и это должно работать просто отлично. Также отметил, что ваше значение замены имеет "
вокруг ваших db_name
и db_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 модуль . Вот пример задачи, вам может потребоваться обновить запрос xpath в зависимости от вашего XML-файла.
- 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"