В Ansible я ищу технику, которая похожа на lineinfile
или replace
, но для файлов XML при использовании шаблонов это не вариант. Похоже на очень распространенную потребность.
С XML файлами, однако, необходимо указать xpath
, чтобы гарантировать, что элемент присутствует/отсутствует в правильном месте в DOM.
Решение должно гарантировать, что существует механизм замены существующего node, который может выглядеть немного иначе, чем целевой node.
Тривиальный пример XML файла:
<?xml version="1.0" encoding="ISO-8859-1"?>
<datasources-configuration xmlns:myns="http://org.someorg.ds/config">
<datasources>
<!-- various other xml -->
<datasource>
<name>MyDS</name>
<jdbcUrl>...</jdbcUrl>
</datasource>
</datasources>
<!-- various other xml -->
</datasources-configuration>
Я хочу, чтобы гарантировать, что полный многострочный блок XML будет вставлен/заменен в целевой XML файл, если будет определено определенное выражение xpath. Например, чтобы добавить следующий источник данных к источникам данных:
<datasource>
<name>AnotherDS</name>
<jdbcUrl>...</jdbcUrl>
</datasource>
Лучшее, что я видел, это этот настраиваемый модуль, который разбивает его собственные примеры: https://github.com/cmprescott/ansible-xml
Имеется ли такой модуль или рекомендации по решению?