首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ansible xml将值放在底部的新节点中,而不是修改现有节点

Ansible xml将值放在底部的新节点中,而不是修改现有节点
EN

Stack Overflow用户
提问于 2020-03-24 13:01:59
回答 1查看 70关注 0票数 0

我正在尝试使用jboss standalone.xml文件,试图在部署时针对不同的环境对其进行自定义。在我的xml中,我有:

代码语言:javascript
运行
复制
<server xmlns="urn:jboss:domain:1.2">
  <extensions></extensions>
  <system-properties>  </system-properties>
  <management>  </management>
  <profile>
    <subsystem xmlns="urn:jboss:domain:logging:1.1"></subsystem>
    <subsystem xmlns="urn:jboss:domain:configadmin:1.1"></subsystem>
    <subsystem xmlns="urn:jboss:domain:datasources:1.1">
      <datasources>
        <xa-datasource use-ccm="true"  pool-name='MyPoolname'>
          <xa-datasource-property name="URL">  </xa-datasource-property>
          <xa-datasource-property name="Password">  </xa-datasource-property>
          <xa-datasource-property name="User"> </xa-datasource-property>
        </xa-datasource>
      </datasources>
    </subsystem>
  </profile>
</server>

在上面的xml中,我想用我的剧本中包含的config_vars structure中包含的值替换DB连接的URL:

代码语言:javascript
运行
复制
  tasks:
    - name: "Update the DB endpoint in {{item.jboss_folder}}"
      become: yes
      become_user: root
      xml:
        path: "/opt/{{item.jboss_folder}}/standalone/configuration/standalone.xml"
        namespaces:
          svr: "urn:jboss:domain:1.2"
          ss: "urn:jboss:domain:datasources:1.0"
        xpath: "/svr:server/profile/ss:subsystem/ss:datasources/ss:xa-datadource[@pool-name='MyPoolname']/ss:xa-datasource-property[@name='URL']"
        value: 'mysql://{{item.db_endpoint}}:3306/{{item.db_name}}'
      loop: "{{config_vars}}"

生成的xml如下所示:

代码语言:javascript
运行
复制
<?xml version='1.0' encoding='UTF-8'?>
<server xmlns="urn:jboss:domain:1.2">
  <extensions/>
  <system-properties>  </system-properties>
  <management>  </management>
  <profile>
    <subsystem xmlns="urn:jboss:domain:logging:1.1"/>
    <subsystem xmlns="urn:jboss:domain:configadmin:1.1"/>
    <subsystem xmlns="urn:jboss:domain:datasources:1.1">
      <datasources>
        <xa-datasource use-ccm="true" pool-name="MyPoolname">
          <xa-datasource-property name="URL">  </xa-datasource-property>
          <xa-datasource-property name="Password">  </xa-datasource-property>
          <xa-datasource-property name="User"> </xa-datasource-property>
        </xa-datasource>
      </datasources>
    </subsystem>
  </profile>
<profile><ns0:subsystem xmlns:ns0="urn:jboss:domain:datasources:1.0"><ns0:datasources><ns0:xa-datadource pool-name="MyPoolname"><ns0:xa-datasource-property name="URL">mysql://<whatever-my-db-is>:3306/prod</ns0:xa-datasource-property></ns0:xa-datadource></ns0:datasources></ns0:subsystem></profile></server>

出现了一个新的配置文件标签,其中的子标签类似于<ns0:...>。是什么让它创建新节点而不是查找xpath位置并赋值,以及为什么它要发明这个新的(不存在的)名称空间名称?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-24 16:14:55

xpath中的省略错误

原件:

/svr:server/profile/ss:subsystem/ss:datasources/ss:xa-datadource[@pool-name='MyPoolname']/ss:xa-datasource-property[@name='URL']

需要满足以下条件:

/svr:server/svr:profile/ss:subsystem/ss:datasources/ss:xa-datadource[@pool-name='MyPoolname']/ss:xa-datasource-property[@name='URL']

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60825233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档