web-dev-qa-db-fra.com

Ansible: lire le fichier distant

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?

27
Kiva

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:
14
helloV

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 }}"
55
danday74

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}}" 
6
vernonm

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.

2
Luv33preet