使用ansible替换xml文件中的一行

使用ansible替换xml文件中的一行,ansible,Ansible,请在这里帮我指点一下 - name: LDAP Settings hosts: myserver vars: mark_1: 'include location="conf/basicUserRegistry.xml"/' mark_2: 'include location="conf/ldapUserRegistry.xml"/' tasks: - replace: path: /opt/IBM/server/liberty/servers/clm/se

请在这里帮我指点一下

- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'
我想注释一个配置文件中的一行,需要使用ansible取消注释另一行

- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'
我的文件内容如下

- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'

`
我想对此发表评论
``
这行我想取消注释

我尝试了下面的剧本,它没有显示任何错误,即使它没有改变任何文件的更改

- name: enable LDAP
  hosts: localhost
  tasks:
   - name: disbale basic user-registry
     lineinfile:
       path: /opt/IBM/605CLM/JazzTeamServer/server/liberty/servers/clm/server.xml
       regexp: '^\s*<include location="conf/basicUserRegistry.xml">.*$'
       line: '<!--include location="conf/basicUserRegistry.xml"-->;'
       backrefs: yes
     become: true
- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'
-名称:启用LDAP
主机:本地主机
任务:
-名称:取消基本用户注册表
线条填充:
路径:/opt/IBM/605CLM/JazzTeamServer/server/liberty/servers/clm/server.xml
regexp:“^\s**$”
行:';'
背景参考:是的
变成:真的

-名称:启用LDAP用户\u注册表
主机:本地主机
任务:
线条填充:
dest:/opt/IBM/605CLM/JazzTeamServer/server/liberty/servers/clm/server.xml
regexp:“^(.*)(.*)$”
行:';'
背景参考:是的

输出:

- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'
播放[启用LDAP]******************************************************************************************************************************************

- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'
任务[收集事实]************************************************************************************************************************************** 确定:[本地主机]

- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'
任务[取消基本用户注册表]************************************************************************************************************************** 确定:[本地主机]

- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'
重演**************************************************************************************************************************************************
localhost:ok=2 changed=0 unreachable=0 failed=0这就是您要查找的代码吗

vars:
  mark_1: 'include location="conf/basicUserRegistry.xml"/'
  mark_2: 'include location="conf/ldapUserRegistry.xml"/'
tasks:
  - lineinfile:
      path: server.xml
      regex: "^<!--{{ mark_2 }}-->"
      line: "<{{ mark_2 }}>"
  - lineinfile:
      path: server.xml
      regex: "^<{{ mark_1 }}>"
      line: "<!--{{ mark_1 }}-->"
- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'
vars:
标记1:'include location=“conf/basicUserRegistry.xml”/
标记2:'include location=“conf/ldapUserRegistry.xml”/
任务:
-线条填充:
路径:server.xml
正则表达式:“^”
行:“”
-线条填充:
路径:server.xml
正则表达式:“^”
行:“”
它不是幂等的!如果正则表达式存在,则该行将替换找到的行。如果正则表达式不存在,则仍将添加“*”行。要使其幂等,请使用替换模块(下面的示例)

- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'
或者,这个

  - lineinfile:
      path: server.xml
      regex: ".{{ mark_2 }}."
      line: "<{{ mark_2 }}>"
  - lineinfile:
      path: server.xml
      regex: ".{{ mark_1 }}."
      line: "<!--{{ mark_1 }}-->"
- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'
-lineinfle:
路径:server.xml
正则表达式:“.{mark_2}}”
行:“”
-线条填充:
路径:server.xml
正则表达式:“.{mark_1}}”
行:“”
或者

- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'
-替换:
路径:server.xml
regexp:“^”
替换:“”
-替换:
路径:server.xml
regexp:“^”
替换:“”

下面是我的剧本,它不会改变文件中的任何内容

- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'
-名称:LDAP设置
主机:myserver
变量:
标记1:'include location=“conf/basicUserRegistry.xml”/
标记2:'include location=“conf/ldapUserRegistry.xml”/
任务:
-替换:
路径:/opt/IBM/server/liberty/servers/clm/server.xml
regexp:“^”
替换:“”
-替换:
路径:/opt/IBM/server/liberty/servers/clm/server.xml
regexp:“^”
替换:“”
备份:是的

解决这个问题的一个可以说更干净的方法是利用

- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'
示例(假设您的示例显示了完整的文件):

- name: LDAP Settings
 hosts: myserver
 vars:
   mark_1: 'include location="conf/basicUserRegistry.xml"/'
   mark_2: 'include location="conf/ldapUserRegistry.xml"/'
 tasks:
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<!--{{ mark_2 }}-->"
       replace: "<{{ mark_2 }}>"
    - replace:
       path: /opt/IBM/server/liberty/servers/clm/server.xml
       regexp: "^<{{ mark_1 }}>"
       replace: "<!--{{ mark_1 }}-->"
       backup: yes'

你好,博特卡,我尝试了你的第一个解决方案,它像魔术一样工作。这让我很惊讶,解决方案完美地满足了我的要求。这是一个很好的答案,非常感谢你的帮助你好,沃纳,不客气!小心。第一个解决方案不是幂等的。你好,博特卡,第一次它工作了。但是当我再次尝试时,它没有改变xml文件中的值,但ansible显示为changed=2,但文件中没有更改。我已经对第一个示例进行了注释。使用ansible playbook--diff…查看更改的内容。你好,Botka,有什么建议吗?