首页 文章

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

提问于
浏览
0

请在这里帮助我 .

我想在一个配置文件中注释一行,并且需要使用ansible取消注释另一个lline .

我的文件内容如下 .


<include location="conf/basicUserRegistry.xml"/>                                           -------------------------this i want to comment 
<!--include location="conf/ldapUserRegistry.xml"/-->                                            --------------------------- this line i want to uncomment

我尝试使用下面的游戏书,即使它没有更改文件的任何更改,也没有显示任何错误 .


  • name:启用LDAP主机:localhost任务:

  • name:disbale basic user-registry lineinfile:path:/opt/IBM/605CLM/JazzTeamServer/server/liberty/servers/clm/server.xml regexp:'^\s*.*$' line:';' backrefs:yes

成为:真实


  • name:启用LDAP USER_REGISTRY hosts:localhost tasks:lineinfile:dest:/opt/IBM/605CLM/JazzTeamServer/server/liberty/servers/clm/server.xml regexp:'^( . )( . )$ ' line: ';' backrefs:是的

输出:

播放[启用LDAP] ********************************************* ************************************************** *******************************************

任务[收集事实] ********************************************* ************************************************** ***************************************好的:[localhost]

任务[解除基本用户注册] ****************************************** ************************************************** ******************************确定:[localhost]

回放************************************************* ************************************************** ************************************************ localhost: ok = 2 changed = 0 unreachable = 0 failed = 0

2 回答

  • 0

    下面是我的剧本,它没有改变文件上的任何内容

    - 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'
    
  • 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 }}-->"
    

    它不是幂等的!如果正则表达式存在,该行将替换找到的行 . 如果正则表达式不存在,则无论如何都会添加*行“ . 为了使其幂等,请使用替换模块(下面的示例) .

    或者,或许,这个?

    - lineinfile:
          path: server.xml
          regex: ".{{ mark_2 }}."
          line: "<{{ mark_2 }}>"
      - lineinfile:
          path: server.xml
          regex: ".{{ mark_1 }}."
          line: "<!--{{ mark_1 }}-->"
    

    要么,

    - replace:
          path: server.xml
          regexp: "^<!--{{ mark_2 }}-->"
          replace: "<{{ mark_2 }}>"
      - replace:
          path: server.xml
          regexp: "^<{{ mark_1 }}>"
          replace: "<!--{{ mark_1 }}-->"
    

相关问题