In Ansible, sto cercando una tecnica che funzioni allo stesso modo di lineinfile
o replace
ma per i file XML quando si usano i modelli non è un'opzione. Sembra una necessità molto comune.Manipolazione anonimo di xml simile al lineinfile
Con i file XML, tuttavia, è necessario specificare un xpath
per garantire che l'elemento sia presente/assente dalla posizione corretta nel DOM.
La soluzione deve garantire che vi sia un meccanismo di sostituzione di un nodo esistente che potrebbe essere un po 'diverso dal nodo di destinazione.
Trivial esempio di file 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>
voglio essere in grado di garantire un blocco multilinea pieno di XML viene inserito/sostituito in un file XML di destinazione dato un certo un'espressione XPath è abbinato. Ad esempio, per aggiungere il seguente origine dati a origini dati:
<datasource>
<name>AnotherDS</name>
<jdbcUrl>...</jdbcUrl>
</datasource>
Il meglio che ho visto è questo modulo personalizzato che rompe su di essa proprio esempi: https://github.com/cmprescott/ansible-xml
Fa un modulo del genere esiste o raccomandazioni soluzione?
Perché i modelli non sono un'opzione? Il tuo esempio sembra templatabile per me. – ydaetskcoR
@ydaetskcoR Questo file è già stato creato da una fornitura di base indipendente indipendente. Il templating di nuovi playbook e ruoli più recenti avrebbe spazzato via la linea di base. –
Sembra che manchi il punto di modello se non sta creando un file di output esattamente come si desidera per l'ambiente. Puoi condividere quello che stai facendo nel gioco dei templari? cioè il gioco, il modello j2 e le eventuali variabili di inventario necessarie. – ydaetskcoR