Ansible
Ansible替換:正則表達式/替換跨越多行?
在ansible中,我想替換它:
<sadmin> <user>admin@localhost</user> </sadmin>
有了這個:
<sadmin> <user>user1@somedomain</user> <user>user2@somedomain</user> <user>user3@somedomain</user> </sadmin>
我試過使用替換模組,但不知道正則表達式是否可以跨越多行(我將如何使用 python 原始符號作為換行符?)。我嘗試了該
xml
模組,但我認為這實際上不是 XML 文件,因為它一直<?xml version='1.0' encoding='UTF-8'?>
在文件頂部添加標題。我怎樣才能做到這一點?更好地使用模板?- name: add replacements to jabber config files replace: path : "/etc/jabberd2/{{ item.path }}" regexp : "{{ item.regex }}" replace: "{{ item.replace }}" with_items: - { path: 'muc.xml', regex: 'conference.localhost', replace: 'conference.mydomain' } - { path: 'muc.xml', regex: '<sadmin>.*</sadmin>', replace: '<sadmin><user>user1@somedomain</user>\n<user>user2@somedomain</user></sadmin>' }
下面的播放按要求進行
- replace: path: test.xml regexp: '<user>admin@localhost<\/user>' replace: |- <user>user1@somedomain</user> <user>user2@somedomain</user> <user>user3@somedomain</user>
下面的下一個範例顯示如何替換整個sadmin部分
- replace: path: test.xml regexp: '(<sadmin>[\s\S]*)</sadmin>' replace: |- <sadmin> <user>user1@somedomain</user> <user>user2@somedomain</user> <user>user3@somedomain</user> </sadmin>