Jak mogę skopiować więcej niż jeden plik do zdalnych węzłów przez Ansible w zadaniu?
Próbowałem zduplikować wiersz modułu kopiowania w moim zadaniu, aby zdefiniować pliki, ale kopiuje tylko pierwszy plik.
Możesz użyć with_fileglob
pętli do tego:
- copy:
src: "{{ item }}"
dest: /etc/fooapp/
owner: root
mode: 600
with_fileglob:
- /playbooks/files/fooapp/*
/roles/db/files
ale nie mogę uruchomić tej metody. Próbowałem,with_fileglob: - /roles/db/file/*
ale to nie wystarczyźródło
dest
zbiorem jako zmienną?{ src: 'containerizers', dest: {{ containerizers }} }
.{ src: '{{ source.var }}', dest: '{{ dest.var }}' }
W tym celu możesz użyć with_together:
źródło
Jeśli potrzebujesz więcej niż jednej lokalizacji, potrzebujesz więcej niż jednego zadania. Jedno zadanie kopiowania można skopiować tylko z jednej lokalizacji (w tym wielu plików) do innej w węźle.
źródło
Od wersji Ansible 2.5
with_*
konstrukcje są przestarzałe iloop
należy używać składni. Prosty praktyczny przykład:źródło
źródło
find
moduł działa tylko dla ansibl 2.x, ale nie dla ansibl 1.xstdout_lines
wartości zwracanej, ale nie ma ona zastosowania dofind
modułu. To tylkofiles
,examined
imatched
jako wartości zwracane. Mam nadzieję, że pomoże to innymfind
wydaje się tylko patrzeć na system zdalny, nie pozwalając na pobranie czegokolwiek z węzła zarządzającego. Te odpowiedzi, używającwith_fileglob
, wydają się być bardziej odpowiednie: stackoverflow.com/a/42290160/272387 , stackoverflow.com/a/36720342/272387 .Lub możesz użyć with_items:
źródło
źródło
Możesz przeglądać zmienną z listą katalogów:
źródło
Użyj następującego kodu źródłowego do kopiowania wielu plików na komputerze klienckim.
Uwaga:
Jeśli przekazujesz wiele ścieżek przy użyciu zmiennej to
src: „/ root / {{item}}”
Jeśli przekazujesz ścieżkę, używając zmiennej dla różnych elementów, to
src: "/ root / {{item.source_path}}"
źródło
copy
module jest złym narzędziem do kopiowania wielu plików i / lub struktury katalogów,synchronize
zamiast tego użyj modułu, który używarsync
jako zaplecza. Pamiętaj, że wymagarsync
zainstalowania zarówno na kontrolerze, jak i na hoście docelowym. To naprawdę potężne, sprawdź dokumentację ansibli .Przykład - skopiuj pliki z
build
katalogu (z podkatalogami) kontrolera do/var/www/html
katalogu na hoście docelowym:źródło