Jednak polecenia ad hoc nie są wielokrotnego użytku. Jasne, zapewniają sposób szybkiego przeprowadzania poszczególnych zadań, ale nie można ich ponownie wykorzystać. Można narysować analogię tam, gdzie tryb podręcznika jest jak skrypt powłoki, podczas gdy poszczególne polecenia są jedną linijką.
Mówiąc o Shell, Ansible ma też moduł powłoki. Ten moduł służy do uruchamiania poleceń powłoki w systemach docelowych. W tym przewodniku przejdziemy przez moduł powłoki Ansible i zademonstrujemy przykłady, w jaki sposób można go użyć.
Jaki jest moduł powłoki?
Moduł powłoki Ansible pozwala użytkownikowi uruchamiać złożone polecenia z przekierowaniem, rurami itp. Obejmuje nazwę polecenia, jego argumenty z białymi przestrzeniami i uruchamia je na zdalnych hostach.
Może to brzmieć dokładnie tak samo co moduł polecenia Ansible, ale różnica polega na uruchamianiu poleceń na hosta za pomocą powłoki. Moduł Shell ma również dostęp do zmiennych środowiskowych i specjalnych operatorów, takich jak | &; itp. Co więcej, możesz uruchomić całe skrypty za pomocą modułu powłoki. Niemniej jednak powszechnie wiedza wśród użytkowników ansible, że moduł poleceń jest bezpieczniejszą i bardziej przewidywalną opcją niż moduł powłoki.
Wreszcie, należy pamiętać, że ten moduł działa tylko z systemami Linux. Użytkownicy systemu Windows mogą korzystać z Ansible.okna.Win_Shell na swoim miejscu. Powiedziawszy to, przejdźmy do szczegółów modułu powłoki Ansible.
Za pomocą modułu powłoki Ansible
Zanim zaczniemy uruchamiać polecenia i skrypty, spójrzmy na parametry, do których będziesz musiał przekazać wartości podczas korzystania z tego modułu.
Z tego powodu przejdźmy do kilku przykładów używania Ansible Shell.
Przykład 1: Zmiana katalogu roboczego
Jeśli chcesz zmienić katalog roboczy przed wykonaniem polecenia, oto jak to się zrobiło.
- Nazwa: Zmiana katalogu roboczego na mydirTeraz, gdy utworzyliśmy poradnik, możesz uruchomić go za pomocą terminalu Linux, uruchamiając:
Ansible-Playbook Testbook.ymlPrzykład 2: Wyodrębnienie wyjścia polecenia
Jeśli chcesz przechwycić i przechowywać wartość zwrotu polecenia Shell, słowo kluczowe rejestru można użyć.
- Nazwa: Tworzenie .plik txt w $ homePrzykład 3: Sprawdzanie daty
Zacznijmy od sprawdzenia daty na naszym zdalnym serwerze o nazwie Test. Zwróć uwagę, jak składnia modułu powłoki jest tutaj inna. To tylko kolejny sposób na użycie modułu powłoki Ansible.
- Nazwa: Sprawdzanie datyUżyliśmy komendy prostej daty, aby sprawdzić datę w zdalnym systemie. Ponadto dane wyjściowe polecenia (sama data) jest zwracane do rejestru o nazwie Datecmd. Na koniec wyświetlamy zawartość zmiennej rejestra.
Przykład 4: Uruchamianie wielu poleceń
W tym przykładzie utworzymy niektóre pliki tekstowe w tymczasowym katalogu.
Zadania:Tutaj użyliśmy kodu powłoki do utworzenia trzech plików, a mianowicie myFile1, myfile2, i myfile3. Stać się: prawdziwa linia pozwala „stać się” użytkownikiem zdalnego hosta. Na koniec przekazujemy argument CHDIR i zmieniamy katalog.
Przykład 5: Zastosowanie przekierowania i rury
Zobaczmy teraz, jak działają rury i przekierowanie w module Ansible Shell. Będziemy uruchomić proste polecenie LS z pewnym wstępnym przetwarzaniem przez AWK. Ponadto używamy SED do usuwania pustych linii. Ostatecznie przekierujemy dane wyjściowe do pliku tekstowego.
- Nazwa: Weź listę katalogu i zasil ją do plikuNajpierw wykonujemy wspomniane polecenie i przechowujemy jego wynik w mydir.tekst. Następnie używamy innego kota poleceń, aby zapisać zawartość pliku w rejestrze. Wreszcie, ta zmienna rejestru jest wyświetlana.
Jak zapobiec wstrzyknięciu dowodzenia?
Jak wspomnialiśmy wcześniej, moduł dowodzenia jest uważany za bezpieczniejszy sposób robienia rzeczy. Ma jednak nieco ograniczoną funkcjonalność. Jak więc bezpiecznie używać modułu powłoki?
Możesz użyć filtra cytatu, aby chronić nazwy zmiennych, które przekazujesz do modułu powłoki przed wtryskiem poleceń. Poniżej podano przykład tego dezynfekcji.
- Nazwa: Tworzenie .TXT z filtrem cytatowymTo dobra praktyka, aby zawsze korzystać z filtra cytatu ze swoimi zmiennymi. To powstrzyma hakerów przed zmianą polecenia w czasie wykonywania. To bardzo przypomina zastrzyk SQL, ale dopóki podejmujesz bezpieczeństwo, nie musisz się martwić!
Wniosek
Moduł Ansible Shell to wszechstronny i potężny moduł, który zwiększa kontrolę użytkownika i ułatwia zdalną konfigurację. W tym artykule przyjrzeliśmy się, co robi, które parametry ma i które argumenty wymaga i więcej. Mamy nadzieję, że jesteś teraz dobrze przygotowany do korzystania z modułu powłoki Ansible.