Ansible: Définir une variable de contenu de fichier
Je suis à l'aide de l'ec2 module avec ansible-playbook
je veux mettre une variable le contenu d'un fichier. Voici comment je suis en train de le faire.
- Var avec le nom de fichier
- shell tâche à
cat
le fichier - utiliser le résultat de la
cat
de passer à l'ec2 module.
Exemple le contenu de mon playbook.
vars:
amazon_linux_ami: "ami-fb8e9292"
user_data_file: "base-ami-userdata.sh"
tasks:
- name: user_data_contents
shell: cat {{ user_data_file }}
register: user_data_action
- name: launch ec2-instance
local_action:
...
user_data: "{{ user_data_action.stdout }}"
Je suppose, il y a un moyen beaucoup plus facile de faire cela, mais je ne pouvais pas le trouver lors de la recherche Ansible docs.
- Cette une a fonctionné pour moi. Je n'ai pas trouvé comment intégrer des variables dans une liste de choix(pipe) de commande.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser recherches dans Ansible pour obtenir le contenu d'un fichier, par exemple
Mise en garde: Cette recherche permettra de travailler avec des fichiers locaux, pas des fichiers à distance.
Voici un exemple complet de la documentation:
cat
commande @TesterJeff l'exemple est en cours d'exécution sur la machine distante.Vous pouvez utiliser le slurp module: (Merci à @mlissner pour suggérer)
Vous pouvez utiliser module de chercher pour copier des fichiers à partir de serveurs distants à l'échelle locale, et module de recherche de lire le contenu des fichiers récupérés.
de recherche ne fonctionne que sur localhost. Si vous souhaitez récupérer les variables à partir d'une des variables fichier que vous avez fait à distance utilisation include_vars:
{{ varfile }}
. Contenu de{{ varfile }}
doit être un dictionnaire de la forme{"key":"value"}
, vous trouverez ansible vous donne des problèmes si vous incluez un espace après les deux points.include_vars
fonctionne en local sur la machine de contrôle, pas avec des fichiers sur la cible.