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 libxmlversion 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-lxmloupip 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