Jaka jest różnica między powłoką a poleceniem w Ansible?

Jaka jest różnica między powłoką a poleceniem w Ansible?

W rdzeniu Ansible istnieją różne moduły ansitalne dla prawie wszystkich rodzajów użycia. Moduły są również znane jako „wtyczki biblioteki lub zadań”, dyskretne jednostki kodu używane w zadaniu podręcznika lub wiersz poleceń. Każdy moduł ansible zwykle wykonuje się w zdalnym węźle docelowym i zbiera wyjście zwrotne. Dwa najczęściej używane moduły ansible to powłoka i polecenie.

Moduł powłoki w Ansible służy do wykonywania wszystkich poleceń powłoki na docelowych hostach opartych na UNIX. Moduł powłoki wykonywa polecenia w węzłach lub skontlerze. Kolejnym dedykowanym modułem ansible jest skrypt, który przenosi skrypt powłoki z komputera sterowania na zdalny serwer i wykonuje go. W module poleceń podane polecenie wykonuje się na wszystkich wybranych węzłach. Wykonane polecenie nie będzie przetwarzane przez powłokę.

Moduły ansyjne są prawie podobne i wykonują te same zadania na pierwszym widoku, ale istnieją pewne kluczowe różnice między tymi modułami. W tym artykule wspomniemy niektóre główne różnice między modułami powłoki i poleceń w Ansible.

Różni się między powłoką vs. Moduł poleceń w Ansible

W większości przypadków użycia zarówno moduły powłoki, jak i poleceń wykonują to samo zadanie. Istnieje jednak kilka głównych różnic między tymi dwoma modułami.

Wsparcie zmiennych i operacyjnych

Podczas korzystania z modułu poleceń polecenia nie będą wykonywane przez powłokę. W związku z tym zmienne takie jak $ home nie są dostępne, a operacje takie jak, | i nie będzie działać w tym przypadku. Jeśli chcesz użyć tych zmiennych i operacji, musisz użyć modułu powłoki.

Wykonanie polecenia

W module powłoki polecenia są wykonywane przez powłokę lub domyślnie w zdalnym węźle '/bin/sh'. Jak wspomnialiśmy powyżej, w module poleceń wykonywanie poleceń nie jest przetwarzane przez powłokę. Lokalizacja można zmienić za pomocą opcji wykonywalnej. Funkcje rur i przekierowania są zatem dostępne w module Shell.

Bezpieczeństwo

Jeśli chcesz uruchomić polecenie przewidywalnie i bezpiecznie, zaleca się użycie modułu poleceń zamiast powłoki. Środowisko użytkownika nie będzie miało wpływu na moduł poleceń; jest bezpieczniejszy niż moduł powłoki.

Wniosek

Chociaż oba moduły są przydatne, należy najpierw sprawdzić, czy dostępny jest bardziej szczegółowy moduł ansible. Najlepszą praktyką jest używanie modułów zamiast wykonywania polecenia surowego, ponieważ moduły spełniają wszystkie standardy, w tym obsługę wyjątków. Jeśli okaże się, że nie ma dostępnego modułu, korzystanie z modułów poleceń jest bardziej bezpieczne. Użyj modułów powłoki, jeśli potrzebujesz określonych funkcji i operacji zmiennych.