Я пытаюсь изменить значения в файле конфигурации standalone-full.xml для сервера JBoss.Проблема, с которой я сталкиваюсь, связана с пространством имен.Я сделал несколько поисков и попробовал несколько различных сценариев, которые я предоставлю.Я знаю, что это как-то связано с пространством имен, потому что когда я удаляю его, playbook работает.Я предполагаю, что я упускаю что-то простое и буду очень признателен за любую помощь, которая может быть оказана.Я довольно слабо разбираюсь в xpath, что, вероятно, является большой частью проблемы.
Ниже приведен пример кода и различные попытки заставить это работать.
sample.xml:
<?xml version='1.0' encoding='UTF-8'?>
<server xmlns="urn:jboss:domain:1.7">
<extensions>
<!-- <extension module="org.jboss.as.clustering.infinispan"/>-->
<extension module="org.jboss.as.cmp"/>
<extension module="org.jboss.as.connector"/>
<extension module="org.jboss.as.deployment-scanner"/>
<extension module="org.jboss.as.ee"/>
<extension module="org.jboss.as.ejb3"/>
<extension module="org.jboss.as.jacorb"/>
<extension module="org.jboss.as.jaxr"/>
<extension module="org.jboss.as.jaxrs"/>
<extension module="org.jboss.as.jdr"/>
<extension module="org.jboss.as.jmx"/>
<extension module="org.jboss.as.jpa"/>
<extension module="org.jboss.as.jsf"/>
<extension module="org.jboss.as.jsr77"/>
<extension module="org.jboss.as.logging"/>
<extension module="org.jboss.as.mail"/>
<extension module="org.jboss.as.messaging"/>
<extension module="org.jboss.as.naming"/>
<extension module="org.jboss.as.pojo"/>
<extension module="org.jboss.as.remoting"/>
<extension module="org.jboss.as.sar"/>
<extension module="org.jboss.as.security"/>
<extension module="org.jboss.as.threads"/>
<extension module="org.jboss.as.transactions"/>
<extension module="org.jboss.as.web"/>
<extension module="org.jboss.as.webservices"/>
<extension module="org.jboss.as.weld"/>
</extensions>
<system-properties>
<property name="app.datasource.connection-url" value="jdbc:oracle:thin:@(description=(address=(protocol=tcp)(host=mdatabase.example.com)(port=1521))(connect_data=(service_name=myservice)))"/>
<property name="app.datasource.security.user-name" value="Myuser"/>
<property name="app.datasource.security.password" value="mypassword"/>
</system-properties>
</server>
simpleplay.xml:
---
- hosts: all
gather_facts: no
connection: local
tasks:
- name: "Read XML"
xml:
path: sample.xml
xpath: /server/system-properties/property[@name='app.datasource.security.user-name']
attribute: value
content: attribute
register: my_val
- name: "Show me"
debug:
var: my_val
без хостов:
localhost
Первая попытка: (которая подтвердила мне, что пространство имен было моей проблемой.) В файле sample.xml я изменил:
<server xmlns="urn:jboss:domain:1.7">
на
<server>
напроизводить:
PLAY [all] *******************************************************************************************************************************************************************************************************
TASK [Read XML] **************************************************************************************************************************************************************************************************
ok: [localhost]
TASK [Show me] ***************************************************************************************************************************************************************************************************
ok: [localhost] => {
"my_val": {
"actions": {
"namespaces": {},
"state": "present",
"xpath": "/server/system-properties/property[@name='app.datasource.security.user-name']"
},
"changed": false,
"count": 1,
"failed": false,
"matches": [
{
"property": {
"name": "app.datasource.security.user-name",
"value": "Myuser"
}
}
],
"msg": 1
}
}
PLAY RECAP *******************************************************************************************************************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0
Добавлено пространство имен для xml в игре с пространством имен, добавленным обратно в sample.xml:
---
- hosts: all
gather_facts: no
connection: local
tasks:
- name: "Read XML"
xml:
path: sample.xml
xpath: /x:server/system-properties/property[@name='app.datasource.security.user-name']
namespaces:
x: "urn:jboss:domain:1.7"
attribute: value
content: attribute
register: my_val
, что дает:
PLAY [all] *******************************************************************************************************************************************************************************************************
TASK [Read XML] **************************************************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Xpath /x:server/system-properties/property[@name='app.datasource.security.user-name'] does not reference a node!"}
to retry, use: --limit @/home/ec2-user/work/xpathtest/simpleplay.retry
PLAY RECAP *******************************************************************************************************************************************************************************************************
localhost : ok=0 changed=0 unreachable=0 failed=1
Несколькоxpaths, которые я пробовал:
/ x: сервер / x: свойства системы / x: свойство [@x: name = 'app.datasource.security.user-name']
/ server [namespace-uri () = 'urn: jboss: домен: 1.7'] / system-properties / property [@ name = 'app.datasource.security.user-имя ']
/ * [local-name () = server] / system-properties / property [@ name =' app.datasource.security.user-name ']
Все также дают вышеуказанный результат.
Боюсь, я недостаточно хорошо понимаю пространство имен, чтобы понять, что я делаю неправильно.Любая помощь будет оценена.