Ansible Copy
Ansible zapewnia funkcjonalność kopiowania plików i katalogów za pomocą modułów copy i fetch. Moduł copy jest wszechstronny.
Moduł copy służy do kopiowania plików i katalogów z maszyny lokalnej na zdalne serwery. A moduł fetch do kopiowania danych ze zdalnej maszyny do lokalnej maszyny.
Jeśli chcesz skopiować pliki po zastąpieniu zmiennymi, takimi jak pliki konfiguracyjne ze zmianami IP, lub możesz użyć modułu szablonów również. Możesz wykonać wiele skomplikowanych zadań z tym modułem.
Kopiowanie plików z lokalnego do zdalnego
Moduł kopiowania jest używany do sprawdzania pliku ustawionego w parametrze src, na lokalnej maszynie. A następnie skopiuje dane do ścieżki zdalnej maszyny określonej w destpath.
W poniższym przykładzie skopiujemy plik sample.txt znajdujący się w katalogu domowym lokalnej maszyny, do miejsca docelowego, którym jest katalog /tmp na zdalnym serwerze. Tak długo jak nie określamy żadnych uprawnień dla pliku, domyślne uprawnienia dla zdalnego pliku są ustawione jako -rw-rw-r-(0664).
Przypadek 1: Jeśli plik jest już obecny na zdalnym serwerze, ale zawartość pliku źródłowego jest inna, wtedy plik docelowy zostanie zmodyfikowany. Możesz to kontrolować poprzez ustawienie parametru force. Domyślnie jest on ustawiony na yes. Więc domyślnie modyfikuje plik.
Jeśli nie chcesz, aby plik był modyfikowany, jeśli plik źródłowy jest inny, możesz ustawić go na Nie. Poniższe zadanie skopiuje plik, jeśli plik nie istnieje na zdalnym serwerze.
Przypadek 2: Jeśli plik nie został znaleziony na lokalnym komputerze, Ansible wyrzuci błąd.
Na przykład: fatal: : FAILED!=> {„changed”: false, „failed”: true, „msg”: „unable to find '~/sample.txt’ in expected paths.”}
Kopiowanie katalogów z lokalnego do zdalnego
Możesz również kopiować foldery lub katalogi za pomocą modułu Ansible copy. Jeśli ścieżka 'src’ jest katalogiem, to zostanie on skopiowany rekursywnie. Albo skopiowany zostanie cały katalog.
Istnieją dwa różne warianty tego zadania. W zależności od tego, czy masz znak '/’ na końcu ścieżki 'src’, czy nie.
Pierwsza metoda utworzy katalog na zdalnym serwerze, z nazwą ustawioną w parametrze src. Następnie, skopiuje i wklei zawartość katalogu źródłowego do tego katalogu.
Jeśli chcesz takiego zachowania, to nie podaje '/’ po ścieżce w parametrze src.
W poniższym przykładzie, najpierw utworzy katalog o nazwie copy_dir_ex w /tmp zdalnego serwera.
Kopiowanie plików między katalogami na zdalnej maszynie
Ansible copy pozwala na kopiowanie plików z jednego katalogu do drugiego na tej samej zdalnej maszynie. Ale to jest tylko dla plików, nie dla katalogów. Możesz użyć parametru remote_src, aby dać Ansible znać o swoich zamiarach.
Poniższy kod skopiuje /tmp/test.txt do katalogu domowego użytkownika (/home//).
.