vars set_fact practices hostvars facts best ansible ansible-playbook

set_fact - Ansible: leer archivo remoto



ansible hostvars (5)

Genero archivos con ansible en un host remoto y después de esta generación, me gustaría leer estos archivos en otra tarea.

No encuentro ningún módulo para leer archivos remotos con ansible (la búsqueda parece solo en el host local).

¿Conoces un módulo como este?

Gracias

EDITAR:

Aquí está mi caso de uso:

Genero claves ssh y las agrego a github. Estas claves se configuran por un objeto en los archivos var, así que hago un bucle como este para generarlo:

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

Funciona muy bien, pero ¿cómo se leen estas claves para enviarlas a github a través de la API?


Al usar el módulo de comando, puede leer o usar ese archivo en otra tarea en un nodo remoto.

me gusta

-command: cp /tmp/xxx/example.sh /usr/local/yyy


Como dijiste, todas las búsquedas están en localhost. Pero todos ellos se pueden hacer en remoto mediante el uso de shell y register . ¿Puedes decir qué es exactamente lo que estás tratando de hacer? solo un ejemplo

- shell: cat "{{remote_file}}" register: data - shell: ...... with_xxxx:


Ejecute con el indicador --diff (genera un dif cuando cambia el archivo de destino) ..

ansible-playbook --diff server.yaml

o sorbelo hasta ..

- name: Slurp hosts file slurp: src: /etc/hosts register: slurpfile - debug: msg="{{ slurpfile[''content''] | b64decode }}"


Puede probar el módulo ''fetch'' , que recuperará el archivo de clave en una ruta de destino en localhost :

fetch: src: ".ssh/{{item.value.file}}" dest:"/tmp/ssh_keys/{{item.value.file}}" flat: yes with_dict: "{{sshConfiguration}}"


Puede registrar el contenido del archivo en una variable usando el comando de registro. Esto es lo que sugeriría,

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

Esto mostrará el contenido del archivo.