Tutti i meccanismi di loop with_*
sono le ricerche locali purtroppo, quindi non c'è un modo veramente pulito per farlo in Ansible. Le operazioni remote per progetto devono essere racchiuse in attività come dovrebbe occuparsi di connessioni e inventario ecc.
Quello che puoi fare è generare il tuo fileglob eseguendo il bombardamento verso l'host e quindi registrando l'output e il looping sulla parte stdout_lines
dell'output.
Quindi un esempio banale può essere qualcosa di simile:
- name : get files in /path/
shell : ls /path/*
register: path_files
- name: fetch these back to the local Ansible host for backup purposes
fetch:
src : /path/"{{item}}"
dest: /path/to/backups/
with_items: "{{ path_files.stdout_lines }}"
Questa sarebbe la connessione all'host remoto (ad esempio, host.example.com
), ottenere tutti i nomi dei file sotto /path/
e quindi copiarli all'host Ansible al percorso: /path/host.example.com/
.
In base alla tua esperienza, ci sono problemi con la fine delle linee tra Windows e Linux quando fai questo? Per esempio. alcuni 'with_items' sarebbero vuoti a copiare lo stdout da una' dir/b'? – Nick