Jak skopiować wiele plików w Ansible

Jak skopiować wiele plików w Ansible
Ansible to fajne narzędzie automatyzacji, które umożliwia automatyzację różnych funkcji. Daje pełną kontrolę użytkownikowi na jego urządzeniach, niezależnie od tego, czy są lokalne, czy zdalne. Jest pełen dżem z wieloma modułami (około 750 - 800 z nich), które okazują się dość korzystne dla użytkowników. ANSIBLE Playbook jest prosty do napisania i pomaga w wykonywaniu zadanych obowiązków, jak ustalanie czasu na określoną pracę lub zatrzymanie określonych działań itp.

Są chwile, kiedy możemy potrzebować kopiowania wielu plików z jednego urządzenia do drugiego. Ansible zapewnia również różne moduły. Te moduły umożliwiają nam kopiowanie wielu plików w tym samym czasie i wysyłanie ich przez zdalne urządzenia. To prowadzi nas do przedmiotu tego artykułu: moduł kopii ansible, który będziemy wdrażać w tym przewodniku.

Skopiuj wiele plików

Jeśli chcemy przesyłać wiele plików, musimy zrobić podręcznik z licznymi zadaniami dla każdej kopii. Chociaż może to rozwiązać problem, nie jest on bardzo wydajny i może stać się dość żmudny. W związku z tym mielibyśmy duży podręcznik z większymi szansami na błędy ludzkie. Trudniej byłoby również debugować. Na szczęście możemy zastosować kilka innych podejść do rozwiązania tego problemu, które są znacznie wygodniejsze i zapisać nasze zasoby.

Za pomocą pętli

Ogólnie rzecz biorąc, Ansible to proste narzędzie do automatyzacji, które nie wymaga pełnej wiedzy na temat programowania. Jeśli jednak masz podstawową wiedzę na temat tego, jak działa kod źródłowy, może być bardzo pomocny w Ansible i zapewnić głębszy wgląd w rozwiązywanie różnych problemów, które napotykasz od czasu do czasu.

Pętla w programowaniu komputerowym to zestaw instrukcji, które każe systemowi powtórzyć określony zestaw poleceń dla określonej ilości razy lub do momentu spełnienia określonego warunku.

Przykłady

-Nazwa: Skopiuj wszystkie pliki w myConf/
Kopiuj:
src: items
dest:/etc/MyApp/
Właściciel: root
Grupa: root
Tryb: u = rw, g = rw, o = r
With_fileglob:
-„MyConf /*”

Uruchom podręcznik za pomocą tego polecenia w terminalu Linux.

Ansible-Playbook Testbook.yml

Powyższy skrypt kopiuje „MyConf/” wraz z całą jego zawartością do docelowego katalogu/etc/myApp/na zdalnym hoście. Polecenie kopii jest wydawane do przeniesienia skopiowanej treści. With_fileglob to pętla, która działa, dopóki pliki nie zostaną całkowicie skopiowane do zdalnego hosta.

Takie podejście działa, gdy do tego samego katalogu należy przesyłać wiele plików.

Kopia katalogu

To kolejne podejście do wysyłania kopii plików do zdalnego hosta. Tutaj kopiujemy cały katalog zawierający pliki, które musimy przenieść i wysyłać go do zdalnego węzła. Może to być trochę czasochłonne, ponieważ trzeba najpierw przenieść wszystkie pliki do określonego katalogu, a następnie całkowicie skopiować katalog. Przykład to pokazuje.

-Nazwa: Kopiuj katalog do urządzenia zdalnego
Kopiuj:
SRC: myConfig/
Dest: itp./Myfolder
Właściciel: root
Grupa: root
Tryb: u = rw, g = rw, o = r

Powyższy skrypt kopiuje katalog MyConfig/do zdalnego urządzenia z miejscem docelowym/etc/MyFolder. Jest to transfer między katalogiem. Segment „trybu” po prostu zapewnia, że ​​obiekty systemu plików są tworzone za pomocą prawidłowych uprawnień. Tryby te można wyświetlić na stronie głównej modułu pod „Parametry modułu kopiuj”.

Kopiowanie plików do wielu zdalnych miejsc docelowych

Aby uzyskać dalszą wydajność w kopiowaniu wielu plików, możemy użyć pętli do wysyłania plików do wielu miejsc docelowych. Użyjmy mechanizmu pętli, aby wysłać 4 narzędzia do zdalnego hosta za jednym razem.

-Nazwa: Kopiowanie wielu plików do wielu miejsc docelowych
Kopiuj:
src: item.src
dest: item.dest
Właściciel: root
Grupa: root
Tryb: u = rw, g = rw, o = r
z elementami:
-src: setup1.conf, dest:/etc/setup1f/
-src: setup2.conf, dest:/etc/setup2f/
-src: setup3.conf, dest:/etc/setup3f/
-src: setup4.conf, dest:/etc/setup4f/

Powyższy kod kopiuje pliki konfiguracyjne 4 narzędzi od właściciela głównego do hosta zdalnego w katalogu /etc /. „Przedmiot.src ”wskazuje, że z komputera docelowego kopiuje się więcej niż 1 element.

Skopiuj pliki z miejsca docelowego na inny na zdalnym hoście

Z ansible możemy również kopiować pliki z jednego miejsca docelowego na zdalnym hoście. Chociaż ta procedura jest ważna dla plików, nie działa w przypadku katalogów. Mały skrypt, który przenosi plik testowy z folderu1 do folder2, pokazano poniżej.

-Nazwa: przesyłanie pliku na zdalnym hoście
Kopiuj:
src: $ home/folder1/test_file
Remote_src: True
dest: $ home/folder2/test_file

Utwórz plik kopii zapasowej w zdalnym hoście przed kopiowaniem

Są chwile, kiedy przez pomyłkę możemy skopiować inny plik. Rozwiązaniem do uniknięcia takich problemów jest utworzenie pliku kopii zapasowej na zdalnym serwerze.

Moduł kopii ansible jest wyposażony w parametr „kopii zapasowej”, aby to przeciwdziałać. W przypadku, gdy plik zdalny jest dostępny i nie jest taki sam jak kopiowany plik, zostanie utworzony nowy plik. Różnica polega na tym, że nowy plik zostanie dołączony do bieżącego znacznika czasu i nazwy oryginalnego pliku. Domyślnie parametr kopii zapasowej ma swoją wartość ustawioną jako „nie”.

Na przykład następujący skrypt tworzy kopię zapasową „myscript.txt ”w katalogu /abc zdalnego hosta. Będzie to nazwane coś w stylu „myscript.tekst.8565.2022-03-17@20: 51: 18 '.

- Gospodarze: bloki
Zadania:
- Nazwa: Przykład kopii zapasowej pliku kopiowania kopii
Kopiuj:
src: ~/myscript.tekst
dest: /ABC
Backup: Tak

Wniosek

W tym artykule omówiliśmy moduł kopii i jego parametry. Widzieliśmy, w jaki sposób moglibyśmy zastosować wiele podejść do przesyłania wielu plików z lokalnego na zdalny host.

To wszystko było dla modułu kopiowania w Ansible wraz z procedurami kopiowania wielu plików między urządzeniami. Mamy nadzieję, że wszelkie zamieszanie w związku z mechanizmem kopiowania Ansible zostało usunięte po przejściu tego artykułu.