使用Ansible修改JBoss属性,而无需更改所有属性标签

时间:2019-05-13 13:25:10

标签: xml jboss ansible appdynamics

AppDynamics Java代理需要修改JBoss Domain.xml和Host.xml文件才能运行。

要使AppDynamics正常工作,我必须添加具有两个属性的“属性”元素。

<property name="jboss.modules.system.pkgs" value="com.singularity"/>

我还尝试在同一代码块中添加元素和属性,但是收到一个错误消息,指出元素和属性是互斥的:

      xml: 
        path:/opt/jboss/domain/configuration/domain.xml
        xpath: /ns:fomain/ns:systemproperties
        namespaces: {'ns': 'urn:jboss:domain:5.0'}
        prettyprint: yes
        add_children:
        - property
        attribute: 'name'
        value: 'test'

我遇到的问题是:在同一路径上有一个具有不同属性的重复属性,必须保持不变

<property name="java.net.preferIPv4Stack" value="true"/>

使用Ansible时,我似乎总是会覆盖所有“属性”元素。

我尝试添加带有相同属性的property元素(就像它是属性名称一样),但是收到python错误:

        add_children:
        - "property name='test' value='test'"

我正在使用的Ansible代码的最新版本如下:

      xml: 
        path:/opt/jboss/domain/configuration/domain.xml
        xpath: /ns:fomain/ns:systemproperties
        namespaces: {'ns': 'urn:jboss:domain:5.0'}
        prettyprint: yes
        add_children:
        - property
    - name: update attributes
      xml:
        path:/opt/jboss/domain/configuration/domain.xml
        xpath: /ns:fomain/ns:systemproperties
        namespaces: {'ns': 'urn:jboss:domain:5.0'}
        content: attribute
        attribute: 'name'
        value: 'test'
      when: not 'name'

我不知道如何通过ansible处理具有不同属性的重复元素名称。

最后,我需要结束这个:

<system-properties>
        <!-- IPv4 is not required, but setting this helps avoid unintended use of IPv6 -->
        <property name="java.net.preferIPv4Stack" value="true"/>
        <property name="jboss.modules.system.pkgs" value="com.singularity"/>
</system-properties>

任何帮助将不胜感激。我知道答案在盯着我,但我只是看不到

添加一点还可以确保我也没有具有相同属性的相同元素。

谢谢。

0 个答案:

没有答案