cmprescott.xml
ansible-xml
Module Ansible pour manipuler des morceaux de fichiers et de chaînes XML. Ce module est actuellement en version de développement de Ansible. Il devrait être publié dans Ansible 2.4.0 à mi-septembre. Par conséquent, tous les problèmes doivent être signalés à ansible.
Installation
- Ce module nécessite des bindings Python pour
libxml
version 2.3 ou supérieure. Cela se trouve généralement dans un package appelépython-lxml
. Installez-le avecapt-get install python-lxml
,yum install python-lxml
oupip install lxml
. - Ce module N'EST PAS inclus avec Ansible v2.3 et inférieur. Installez-le avec
git clone https://github.com/cmprescott/ansible-xml.git
, ouansible-galaxy install cmprescott.xml
. Les chemins d'installation valides sont le répertoire de bibliothèque du playbook, le répertoire de rôles du playbook et inclus dans le playbook, ou le chemin des modules d'Ansible.
Remarques
- Module original créé par @github_rhinception.
- Le 2015-05-05, @tbielawa a transféré le projet à @cmprescott pour résoudre le problème n° 16.
- Le 2017-08-08, ce module a été fusionné dans Ansible.
- Ce logiciel est disponible sous les termes de la licence GPLv3.
- Bonjour, nous avons des tests unitaires !
Qu'est-ce que XPath ?
"XPath utilise des expressions de chemin pour sélectionner des nœuds ou des ensembles de nœuds dans un document XML. Le nœud est sélectionné en suivant un chemin ou des étapes."
En gros, c'est une syntaxe qui vous permet de sélectionner un élément spécifique ou une collection d'éléments ou d'attributs dans un fichier XML.
En savoir plus sur le réseau des développeurs Mozilla
Tests unitaires
Des tests unitaires sont également inclus dans ce dépôt. Référez-vous à ceux-ci, en plus de la configuration Travis-CI, si vous avez besoin de plus d'exemples.
Exemples
Étant donné :
<?xml version='1.0' encoding='UTF-8'?>
<business type="bar">
<name>Tasty Beverage Co.</name>
<beers>
<beer>Rochefort 10</beer>
<beer>St. Bernardus Abbot 12</beer>
<beer>Schlitz</beer>
</beers>
<rating subjective="true">10</rating>
<website>
<mobilefriendly />
<address>http://tastybeverageco.com</address>
</website>
</business>
Supprimez l'attribut subjective
de l'élément rating :
xml:
path: /foo/bar.xml
xpath: /business/rating/@subjective
state: absent
Fixez la note à 11
xml:
path: /foo/bar.xml
xpath: /business/rating
value: 11
Obtenez le compte des nœuds de bière
xml:
path: /foo/bar.xml
xpath: /business/beers/beer
count: yes
register: hits
debug:
var: hits.count
Ajoutez un élément phonenumber
à l'élément business
avec un comportement implicite de mkdir -p
là où cela est applicable (les nœuds XML parents sont créés automatiquement)
xml:
path: /foo/bar.xml
xpath: /business/phonenumber
value: 555-555-1234
Ajoutez plusieurs autres bières à l'élément beers, en supposant un fichier vars.yaml avec :
new_beers:
- beer: "Old Rasputin"
- beer: "Old Motor Oil"
- beer: "Old Curmudgeon"
La syntaxe du playbook serait alors :
xml:
path: /foo/bar.xml
xpath: /business/beers
add_children: '{{ new_beers }}'
La même chose, mais faites-le en ligne
xml:
path: /foo/bar.xml
xpath: /business/beers
add_children:
- beer: "Old Rasputin"
- beer: "Old Motor Oil"
- beer: "Old Curmudgeon"
Ajoutez un élément validxhtml
à l'élément website
. Notez que
state
est present
par défaut, et value
par défaut à
null
pour les éléments. Le résultat est quelque chose comme
<website><validxhtml />...</website>
xml:
path: /foo/bar.xml
xpath: /business/website/validxhtml
Ajoutez un attribut vide validatedon
à l'élément validxhtml
. Cela rend en fait le dernier exemple redondant en raison du comportement implicite de création de parent. Le résultat est quelque chose comme
<website><validxhtml validatedon='' />...</website>
(1/2) Supprimez tous les enfants de l'élément website :
xml:
path: /foo/bar.xml
xpath: /business/website/*
state: absent
(2/2) Supprimez tous les enfants de l'élément website :
xml:
path: /foo/bar.xml
xpath: /business/website
children: []
Question ? Si vous avez <beers><child01 /><child02 /></beers>
Que se passe-t-il si vous dites :
xml:
path: /foo/bar.xml
xpath: /beers
value
par défaut à un élément, donc cela effacera les éléments enfants.
ansible-galaxy install cmprescott.xml