Jak używać modułu powłoki ansible

Jak używać modułu powłoki ansible
Ansible jest szeroko stosowany jako silnik automatyzacji dla potrzeb IT, takich jak zarządzanie konfiguracją, dostarczanie w chmurze i wiele więcej. Automatyzacja brzmi świetnie, ale w jaki sposób Ansible to osiąga? Używa „modułów”, które są odpowiedzialne za automatyzację. Bez tych modułów użytkownik musiałby użyć poleceń ad hoc do wykonywania zadań.

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.

  • CHDIR - Zmienia bieżący katalog przed wykonaniem.
  • CMD - ciąg zawierający polecenie do wykonania, wraz z jego argumentami.
  • wykonywalny - wymaga bezwzględnej ścieżki do zmiany używanej powłoki.
  • usuwa - bierze nazwę pliku. Używane do wykluczenia kroków, gdy plik nie istnieje.
  • stdin - umożliwia użytkownik ustawiony stdin polecenia na określoną wartość.
  • Ostrzegaj - bierze tak (domyślnie) lub nie, włączając lub wyłączanie ostrzeżeń zadań.

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 mydir

Ansible.wbudowany.Shell: MyScript.sh >> mylog.tekst

Args:

CHDIR: MYDIR/

Teraz, gdy utworzyliśmy poradnik, możesz uruchomić go za pomocą terminalu Linux, uruchamiając:

Ansible-Playbook Testbook.yml

Przykł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 $ home

Shell: Echo "Zapisz mnie!"> $ Dom/test.tekst

Zarejestruj się: Shell_output

- debugowanie: var = shell_output

Przykł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 daty

powłoka:

"data"

Zarejestruj się: datecmd

Tagi: datecmd

- Debug: msg = "datecmd.stdout "

Uż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:

- Nazwa: Tworzenie wielu plików

Ansible.wbudowany.Shell: |

echo "I Am File 1"> /tmp /myFile1.tekst
echo "I Am File 2"> /tmp /myFile2.tekst
echo "I Am File 3"> /tmp /myFile3.tekst
staje się prawdą
Args:
chdir: /var /log

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 pliku

powłoka:

„ls -lrt/Apps | Awk 'drukuj 9 $' | sed '/^$/d'>/tmp/mydir.tekst "

Zarejestruj się: lsout

Tagi: lsout

- Nazwa: Wyświetl plik

Shell: Cat /TMP /Dirlist.tekst

Zarejestruj się: DisplayList

- debugowanie: msg = "displayList.stdout_lines "

Najpierw 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 cytatowym

Shell: Echo „Jestem bezpieczny”> $ home/SafeFile | cytat .tekst

To 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.