Je génère des fichiers avec ansible sur l'hôte distant et après cette génération, j'aimerais lire ces fichiers dans une autre tâche.
Je ne trouve aucun module pour lire un fichier distant avec ansible (la recherche semble uniquement sur l'hôte local).
Connaissez-vous un module comme celui-ci?
Merci
MODIFIER:
Voici mon cas d'utilisation:
Je génère des clés ssh et je les ajoute à github. Ces clés sont définies par un objet dans des fichiers var, donc je boucle comme ceci pour le générer:
tasks:
- name: Create ssh key
user:
name: "{{sshConfigFile.user}}"
generate_ssh_key: yes
ssh_key_file: ".ssh/{{item.value.file}}"
state: present
with_dict: "{{sshConfiguration}}"
Cela fonctionne très bien, mais comment lire ces clés pour les envoyer à github via l'API?
Comme vous l'avez dit, toutes les recherches sont sur localhost. Mais tout cela peut être fait à distance en utilisant Shell
et register
. Pouvez-vous dire exactement ce que vous essayez de faire? juste un exemple.
- Shell: cat "{{remote_file}}"
register: data
- Shell: ......
with_xxxx:
Exécutez soit avec l'indicateur --diff (génère un diff lorsque le fichier de destination change).
ansible-playbook --diff server.yaml
ou Slurp it up ..
- name: Slurp hosts file
Slurp:
src: /etc/hosts
register: slurpfile
- debug: msg="{{ slurpfile['content'] | b64decode }}"
Vous pouvez essayer le module 'fetch' , qui récupérera le fichier de clé vers un chemin de destination sur localhost
:
fetch:
src: ".ssh/{{item.value.file}}"
dest:"/tmp/ssh_keys/{{item.value.file}}"
flat: yes
with_dict: "{{sshConfiguration}}"
Vous pouvez enregistrer le contenu du fichier dans une variable à l'aide de la commande register. Voici ce que je suggérerais,
- name: get contents of file
command: cat /path/to/file
register: filename
become: true # use case specific option
- name: viewing the contents
debug:
msg: "{{filename.stdout}}"
Cela affichera le contenu du fichier.