1
votes

Est-il possible d'automatiser l'édition des attributs de fichiers XML à l'aide de livres de lecture ansible?

Est-il possible d'éditer et de modifier un fichier xml via des playbooks ansibles? Si possible comment? J'ai plusieurs attributs à remplacer manuellement dans un fichier xml

<Products>
    <Product productId="MetadataServer"> {{ some_value }} <product/>
    <Product productId="DataQualityExceptionConsole" version="11.5.0.1"/> 
</Products>

Je souhaite remplacer {{some_value}} par une valeur différente.

p >


1 commentaires

Créez un modèle pour ce fichier xml et créez une liste de variables basée sur différents scénarios.


3 Réponses :


1
votes

vous pouvez utiliser le module replace dans ansible:

<Products>
    <Product productId="MetadataServer">some_value<product/>
    <Product productId="DataQualityExceptionConsole" version="11.5.0.1"/> 
</Products>

Modifiez votre fichier si possible comme ci-dessous, il serait plus facile de le remplacer:

- name: Replace Module
  replace: dest=<file-path-name>  regexp='some_value' replace='{{ some_value }}' backup=no


2 commentaires

J'ai différentes valeurs à remplacer dans un fichier XML, dois-je donc avoir plusieurs tâches pour chacune?


@Samson Vous pouvez écrire la même ligne ci-dessus avec une expression régulière différente et une valeur différente dans le même fichier.



0
votes

À partir d'Ansible 2.4, vous pouvez utiliser le module xml ou pour Windows win_xml (Ansible 2.7).

Consultez la documentation des modules: xml ou win_xml


0 commentaires

1
votes

Créez un modèle pour ce fichier xml et créez une liste de valeurs-clés en fonction de différents scénarios. Lorsque vous exécuterez le playbook, ansible remplacera toutes les variables du modèle en utilisant la clé de variable et la valeur correspondante.

par exemple

vous voulez installer tomcat sur un environnement dev et qa. pour Dev, vous utilisez le port 8080 et pour l'environnement QA, vous utilisez le port 8081. vous pouvez créer un modèle de server.xml avec port_no comme variable. (le petit extrait peut être comme ci-dessous). vous pouvez ajouter autant de variables que vous le souhaitez.

<Service name="Catalina">
    <Connector port="{{ port_no }}" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
  1. Une fois le modèle créé, créez une liste de valeurs-clés pour ces variables dans votre fichier d'inventaire en fonction de l'environnement de développement et de contrôle qualité ou dans les variables de groupe ou si vous écrivez un rôle possible, vous pouvez mettre ces valeurs-clés dans "valeurs par défaut" ou dossier "vars". Il n'y a aucun moyen de déclarer une variable dans ansible. Vérifiez ceci: https://docs.ansible.com/ansible/latest/user_guide /playbooks_variables.html


0 commentaires