Wyszukiwanie w witrynie

Fabric — zdalne uruchamianie poleceń powłoki przez SSH w systemie Linux


W stale zmieniającym się świecie tworzenia oprogramowania efektywne zdalne zarządzanie serwerami ma kluczowe znaczenie. Niezależnie od tego, czy jesteś administratorem systemu, inżynierem oprogramowania, czy programistą, możliwość uruchamiania poleceń systemu Linux na zdalnych serwerach jest częstym zadaniem.

W tym miejscu Fabric, wysokopoziomowa biblioteka Python przeznaczona do zdalnego wykonywania poleceń systemu Linux przez SSH, czyni ją niezbędnym narzędziem dla każdego, kto musi zarządzać zdalnymi systemami podczas wykorzystując możliwości Pythona.

Co to jest tkanina?

Fabric to wszechstronna biblioteka Python, która upraszcza proces uruchamiania poleceń powłoki na zdalnych serwerach za pośrednictwem połączeń SSH. Został pierwotnie opracowany przez Jeffa Forciera, a później stał się projektem typu open source.

Zapewnia wysoki poziom interfejsu Pythonic do pracy z systemami zdalnymi, umożliwiając automatyzację zadań, wdrażanie kodu i bezproblemowe zarządzanie konfiguracjami na wielu serwerach.

Dlaczego warto używać tkaniny?

Istnieje kilka istotnych powodów, dla których warto wybrać Fabric do celów zdalnego wykonywania poleceń:

  • Podejście Pythona – Fabric jest zgodny z filozofią Pythona, ułatwiając programistom i administratorom systemów pisanie skryptów w języku, który już znają.
  • SSH i Paramiko – Fabric opiera się na bibliotece Paramiko do obsługi połączeń SSH, która zapewnia bezpieczny i niezawodny sposób zdalnego wykonywania poleceń.
  • Przebieg pracy oparty na zadaniach – Fabric zachęca do zdalnego wykonywania poleceń zorientowanego na zadania. Definiujesz zadania, które są zasadniczo funkcjami Pythona, a Fabric zajmuje się ich wykonywaniem na zdalnych serwerach.
  • Przypadki użycia – Fabric to wszechstronne narzędzie odpowiednie do szerokiego zakresu przypadków użycia, w tym wdrażania aplikacji, zarządzania konfiguracjami serwerów i wykonywania zadań związanych z konserwacją systemu.

W tym przewodniku omówimy kroki niezbędne do wprowadzenia i rozpoczęcia korzystania z sieci Fabric w celu usprawnienia administrowania serwerami dla grup serwerów.

Jak zainstalować narzędzie do automatyzacji tkaniny w systemie Linux

Ważną cechą fabric jest to, że zdalne maszyny, którymi chcesz administrować, muszą mieć jedynie zainstalowany standardowy serwer OpenSSH.

Aby rozpocząć, na serwerze, z którego administrujesz serwerami zdalnymi, potrzebne są jedynie określone wymagania.

Wymagania:

  • Python 2.5+ z nagłówkami programistycznymi
  • Narzędzia konfiguracyjne Pythona i pip (opcjonalne, ale preferowane) gcc

Fabric można łatwo zainstalować za pomocą menedżera pakietów pip, ale możesz także wybrać domyślnego menedżera pakietów yum, dnf lub apt/apt-get, aby zainstalować pakiet fabric , zwykle nazywany tkaniną lub tkaniną Pythona.

Zainstaluj tkaninę w systemach RHEL

W dystrybucjach opartych na RHEL, takich jak CentOS Stream, Rocky Linux i AlmaLinux, musisz mieć zainstalowane i włączone repozytorium EPEL w systemie, aby móc zainstaluj pakiet fabric.

sudo dnf install epel-release
sudo dnf install fabric

Zainstaluj Fabric w systemach Debian

W dystrybucjach opartych na Debianie, takich jak Ubuntu i Linux Mint, użytkownicy mogą po prostu użyć polecenia apt, aby zainstalować pakiet fabric jako pokazane:

sudo apt install fabric

Zainstaluj tkaninę za pomocą PiP

Jeśli fabric nie jest dostępny w repozytoriach Twojego systemu, możesz użyć pip, aby go zainstalować, jak pokazano.

sudo yum install python3-pip       [On RedHat based systems] 
sudo dnf install python3-pip       [On Fedora 22+ versions]
sudo apt install python3-pip       [On Debian based systems]

Po pomyślnej instalacji pip możesz użyć pip, aby pobrać najnowszą wersję fabric, jak pokazano:

pip3 install fabric

Jak używać Fabric do automatyzacji zadań administracyjnych w systemie Linux

Zacznijmy od korzystania z Fabric. W ramach procesu instalacji do katalogu w systemie PATH dodano skrypt Pythona o nazwie 'fab'. Skrypt 'fab' obsługuje wszystkie zadania podczas korzystania z Fabric.

Uruchamiaj polecenia systemu Linux lokalnie

Zgodnie z konwencją musisz zacząć od utworzenia pliku Pythona o nazwie fabfile.py przy użyciu ulubionego edytora tekstu. Pamiętaj, że możesz nadać temu plikowi inną nazwę, jak chcesz, ale musisz określić ścieżkę do pliku w następujący sposób:

fab --fabfile /path/to/the/file.py

Fabric używa 'fabfile.py' do uruchamiania zadań, 'fabfile' powinien znajdować się w tym samym katalogu, w którym wykonujesz Narzędzie do tkanin.

Przykład 1: Stwórzmy najpierw podstawowy Hello World.

vi fabfile.py

Dodaj te linie kodu do pliku.

def hello():
       print('Hello world, Tecmint community')

Zapisz plik i uruchom poniższe polecenie.

fab hello

Przyjrzyjmy się teraz przykładowi pliku fabfile.py służącego do wykonania polecenia uptime na komputerze lokalnym.

Przykład 2: Otwórz nowy plik fabfile.py w następujący sposób:

vi fabfile.py

I wklej następujące linie kodu do pliku.

#!  /usr/bin/env python
from fabric.api import local
def uptime():
  local('uptime')

Następnie zapisz plik i uruchom następujące polecenie:

fab uptime

Uruchamiaj polecenia systemu Linux zdalnie przez SSH

Fabric API korzysta ze słownika konfiguracyjnego, który jest w Pythonie odpowiednikiem tablicy asocjacyjnej znanej jako env, która przechowuje wartości kontrolujące działanie Fabric.

env.hosts to lista serwerów, na których chcesz uruchamiać zadania Fabric. Jeśli Twoja sieć to 192.168.0.0 i chcesz zarządzać hostami 192.168.0.2 i 192.168.0.6 za pomocą swojego fabfile , możesz skonfigurować plik env.hosts w następujący sposób:

#!/usr/bin/env python
from  fabric.api import env
env.hosts = [ '192.168.0.2', '192.168.0.6' ]

Powyższy wiersz kodu określa jedynie hosty, na których będziesz uruchamiać zadania Fabric, ale nie robisz nic więcej. Dlatego możesz zdefiniować niektóre zadania. Fabric udostępnia zestaw funkcji, których możesz używać do interakcji ze zdalnymi maszynami.

Chociaż istnieje wiele funkcji, najczęściej używane to:

  • uruchom – uruchamia polecenie powłoki na zdalnym komputerze.
  • local – który uruchamia polecenie na komputerze lokalnym.
  • sudo – uruchamia polecenie powłoki na zdalnym komputerze z uprawnieniami roota.
  • Pobierz – pobiera jeden lub więcej plików ze zdalnego komputera.
  • Put – przesyła jeden lub więcej plików na zdalny komputer.

Przykład 3: Aby wyświetlić wiadomość echem na wielu komputerach, utwórz plik fabfile.py, taki jak ten poniżej.

#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def echo():
      run("echo -n 'Hello, you are tuned to Tecmint ' ")

Aby wykonać zadania, uruchom następujące polecenie:

fab echo

Przykład 4: Możesz ulepszyć utworzony wcześniej plik fabfile.py, aby wykonywał polecenie uptime na komputerze lokalnym, tak aby uruchamia polecenie uptime, a także sprawdza użycie dysku za pomocą polecenia df na wielu komputerach w następujący sposób:

#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def uptime():
      run('uptime')
def disk_space():
     run('df -h')

Zapisz plik i uruchom następujące polecenie:

fab uptime
fab disk_space

Automatycznie zainstaluj stos LAMP na zdalnym serwerze Linux

Przykład 4: Spójrzmy na przykład wdrożenia serwera LAMP (Linux, Apache, MySQL/MariaDB i PHP) na zdalny serwer Linux.

Napiszemy funkcję, która umożliwi zdalną instalację LAMP-y z uprawnieniami roota.

Dla RHEL/CentOS i Fedory
#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def deploy_lamp():
  run ("yum install -y httpd mariadb-server php php-mysql")
Dla Debiana/Ubuntu i Linux Mint
#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def deploy_lamp():
  sudo("apt-get install -q apache2 mysql-server libapache2-mod-php php-mysql")

Zapisz plik i uruchom następujące polecenie:

fab deploy_lamp

Uwaga: ze względu na dużą ilość danych nie możemy utworzyć screencastu (animowanego gifa) dla tego przykładu.

Teraz możesz zautomatyzować zadania zarządzania serwerem Linux, korzystając z Fabric i jego funkcji oraz przykładów podanych powyżej…

Przydatne opcje tkaniny

  • Możesz uruchomić fab --help, aby wyświetlić przydatne informacje i długą listę dostępnych opcji wiersza poleceń.
  • Ważna opcja --fabfile=PATH, która pomaga określić inny plik modułu Pythona do zaimportowania niż fabfile.py.
  • Aby określić nazwę użytkownika, która będzie używana podczas łączenia się ze zdalnymi hostami, użyj opcji --user=USER.
  • Aby użyć hasła do uwierzytelnienia i/lub sudo, użyj opcji --password=HASŁO.
  • Aby wydrukować szczegółowe informacje o poleceniu NAZWA, użyj opcji --display=NAZWA.
  • Aby wyświetlić formaty użyj opcji --list, do wyboru: krótki, normalny, zagnieżdżony, użyj opcji --list-format=FORMAT.
  • Aby wydrukować listę możliwych poleceń i wyjść, dołącz opcję --list.
  • Możesz określić lokalizację pliku konfiguracyjnego, który ma być używany, używając opcji --config=PATH.
  • Aby wyświetlić kolorowe wyjście błędu, użyj --colorize-errors.
  • Aby wyświetlić numer wersji programu i wyjść, użyj opcji --version.
Streszczenie

Fabric to potężna biblioteka języka Python, która usprawnia zdalne wykonywanie poleceń przez SSH, zapewniając przyjazne dla użytkownika podejście w języku Python. Jego zdolność do upraszczania złożonych zadań i automatyzacji zarządzania systemem sprawia, że jest to cenne narzędzie dla administratorów systemów, programistów i specjalistów DevOps.

Niezależnie od tego, czy zarządzasz pojedynczym serwerem, czy organizujesz wdrożenie na dużą skalę, Fabric może pomóc Ci w wydajnym i skutecznym wykonaniu tego zadania.