(En lien avec Callbacks ou crochets, et séries réutilisables de tâches, dans les rôles Ansible):
Y a-t-il un moyen meilleur pour ajouter à une liste ou ajouter une clé à un dictionnaire dans Ansible que d'utiliser une expression de modèle jinja2?
Je sais que vous pouvez faire quelque chose comme:
- name: c'est une astuce
shell: echo "{% originalvar.append('x') %}La nouvelle valeur de originalvar est {{originalvar}}"
mais n'y a-t-il vraiment pas une sorte de tâche ou aide pour le faire?
Cela semble fragile, semble être non documenté, et repose sur de nombreuses hypothèses sur le fonctionnement des variables dans Ansible.
Mon cas d'utilisation est plusieurs rôles (extensions de serveur de base de données) qui doivent chacun fournir une certaine configuration à un rôle de base (le serveur de base de données). Ce n'est pas aussi simple que d'ajouter une ligne au fichier de configuration du serveur de base de données; chaque changement s'applique à la même ligne, par exemple, les extensions bdr
et pg_stat_statements
doivent toutes deux apparaître sur une ligne cible:
shared_preload_libaries = 'bdr, pg_stat_statements'
Est-ce la méthode Ansible pour le faire de simplement traiter le fichier de configuration plusieurs fois (une fois par extension) avec une expression régulière qui extrait la valeur actuelle, l'analyse, puis la réécrit? Si oui, comment le rendre idempotent sur plusieurs exécutions?
Que se passe-t-il si la config est plus difficile à analyser et ce n'est pas aussi simple que d'ajouter une autre valeur séparée par des virgules? Pensez aux fichiers de configuration XML.