Ricerca nel sito web

Fabric: esegui comandi shell in remoto tramite SSH in Linux


Nel mondo in continua evoluzione dello sviluppo software, la gestione efficiente del server remoto è fondamentale. Che tu sia un amministratore di sistema, un ingegnere del software o uno sviluppatore di software, essere in grado di eseguire comandi Linux su server remoti è un compito comune.

È qui che Fabric, una libreria Python di alto livello progettata per eseguire comandi Linux in remoto tramite SSH, lo rende uno strumento indispensabile per chiunque abbia bisogno di gestire sistemi remoti mentre sfruttando la potenza di Python.

Cos'è il tessuto?

Fabric è una versatile libreria Python che semplifica il processo di esecuzione dei comandi shell su server remoti tramite connessioni SSH. Inizialmente è stato sviluppato da Jeff Forcier e in seguito è diventato un progetto open source.

Fornisce un'interfaccia Python di alto livello per lavorare con sistemi remoti, consentendoti di automatizzare attività, distribuire codice e gestire configurazioni su più server senza sforzo.

Perché usare il tessuto?

Esistono diversi motivi convincenti per scegliere Fabric per le tue esigenze di esecuzione di comandi remoti:

  • Approccio Python: Fabric aderisce alla filosofia Python, consentendo agli sviluppatori e agli amministratori di sistema di scrivere facilmente script in un linguaggio con cui hanno già familiarità.
  • SSH e Paramiko: Fabric si affida alla libreria Paramiko per gestire le connessioni SSH, che fornisce un modo sicuro e affidabile per eseguire comandi in remoto.
  • Flusso di lavoro basato sulle attività: Fabric incoraggia un approccio orientato alle attività per l'esecuzione dei comandi in remoto. Tu definisci le attività, che sono essenzialmente funzioni Python, e Fabric si occupa di eseguirle su server remoti.
  • Casi d'uso: Fabric è uno strumento versatile adatto a un'ampia gamma di casi d'uso, tra cui la distribuzione di applicazioni, la gestione delle configurazioni dei server e l'esecuzione di attività di manutenzione del sistema.

In questa guida tratteremo i passaggi per introdurre e iniziare a utilizzare Fabric per migliorare l'amministrazione del server per gruppi di server.

Come installare Fabric Automation Tool in Linux

Una caratteristica importante di fabric è che le macchine remote che devi amministrare necessitano solo di avere installato il server OpenSSH standard.

Hai solo bisogno di determinati requisiti installati sul server da cui amministri i server remoti prima di poter iniziare.

Requisiti:

  • Python 2.5+ con le intestazioni di sviluppo
  • Python-setuptools e pip (facoltativo, ma preferibile) gcc

Fabric si installa facilmente utilizzando il gestore pacchetti pip, ma potresti anche preferire scegliere il gestore pacchetti predefinito yum, dnf o apt/apt-get per installare il pacchetto fabric , tipicamente chiamato tessuto o tessuto pitonato.

Installa Fabric nei sistemi RHEL

Sulle distribuzioni basate su RHEL come CentOS Stream, Rocky Linux e AlmaLinux, è necessario che il repository EPEL sia installato e abilitato sul sistema per installa il pacchetto fabric.

sudo dnf install epel-release
sudo dnf install fabric

Installa Fabric nei sistemi Debian

Sulle distribuzioni basate su Debian come Ubuntu e Linux Mint gli utenti possono semplicemente fare apt per installare il pacchetto fabric come mostrato:

sudo apt install fabric

Installa Fabric utilizzando PiP

Se fabric non è disponibile nei repository del tuo sistema, puoi utilizzare pip per installarlo come mostrato.

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]

Una volta installato pip con successo, puoi utilizzare pip per scaricare l'ultima versione di fabric come mostrato:

pip3 install fabric

Come utilizzare Fabric per automatizzare le attività di amministrazione di Linux

Iniziamo a scoprire come utilizzare Fabric. Come parte del processo di installazione, uno script Python chiamato 'fab' è stato aggiunto a una directory nel PATH del tuo sistema. Lo script 'fab' gestisce tutte le attività quando si utilizza Fabric.

Esegui i comandi Linux localmente

Per convenzione, devi iniziare creando un file Python chiamato fabfile.py utilizzando il tuo editor di testo preferito. Ricorda che puoi dare a questo file un nome diverso come desideri, ma dovrai specificare il percorso del file come segue:

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

Fabric utilizza 'fabfile.py' per eseguire attività, il 'fabfile' dovrebbe trovarsi nella stessa directory in cui esegui Strumento tessuto.

Esempio 1: creiamo prima un Hello World di base.

vi fabfile.py

Aggiungi queste righe di codice al file.

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

Salva il file ed esegui il comando seguente.

fab hello

Consideriamo ora un esempio di fabfile.py per eseguire il comando uptime sul computer locale.

Esempio 2: apri un nuovo file fabfile.py come segue:

vi fabfile.py

E incolla le seguenti righe di codice nel file.

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

Quindi salva il file ed esegui il seguente comando:

fab uptime

Esegui i comandi Linux in remoto tramite SSH

L'API Fabric utilizza un dizionario di configurazione che è l'equivalente di Python di un array associativo noto come env, che memorizza valori che controllano ciò che fa Fabric.

env.hosts è un elenco di server su cui desideri eseguire attività Fabric. Se la tua rete è 192.168.0.0 e desideri gestire gli host 192.168.0.2 e 192.168.0.6 con il tuo fabfile , puoi configurare env.hosts come segue:

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

La riga di codice precedente specifica solo gli host su cui eseguirai le attività Fabric ma non fa altro. Pertanto puoi definire alcune attività, Fabric fornisce una serie di funzioni che puoi utilizzare per interagire con le tue macchine remote.

Sebbene le funzioni siano numerose, le più comunemente utilizzate sono:

  • esegui: esegue un comando shell su un computer remoto.
  • local – che esegue il comando sul computer locale.
  • sudo – che esegue un comando shell su un computer remoto, con privilegi di root.
  • Ottieni: scarica uno o più file da un computer remoto.
  • Put: carica uno o più file su un computer remoto.

Esempio 3: per inviare in eco un messaggio su più macchine crea un fabfile.py come quello qui sotto.

#!/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 ' ")

Per eseguire le attività, eseguire il comando seguente:

fab echo

Esempio 4: puoi migliorare il fabfile.py che hai creato in precedenza per eseguire il comando uptime sul computer locale in modo che esegue il comando uptime e controlla anche l'utilizzo del disco utilizzando il comando df su più macchine come segue:

#!/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')

Salvare il file ed eseguire il seguente comando:

fab uptime
fab disk_space

Installa automaticamente lo stack LAMP sul server Linux remoto

Esempio 4: Consideriamo un esempio di distribuzione di un server LAMP (Linux, Apache, MySQL/MariaDB e PHP) su un server Linux remoto.

Scriveremo una funzione che consentirà di installare LAMP in remoto utilizzando i privilegi di root.

Per RHEL/CentOS e Fedora
#!/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")
Per Debian/Ubuntu e 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")

Salvare il file ed eseguire il seguente comando:

fab deploy_lamp

Nota: a causa dell'output di grandi dimensioni, non possiamo creare uno screencast (gif animata) per questo esempio.

Ora puoi automatizzare le attività di gestione del server Linux utilizzando Fabric e le sue funzionalità ed esempi forniti sopra...

Opzioni utili del tessuto

  • Puoi eseguire fab --help per visualizzare informazioni utili e un lungo elenco di opzioni disponibili sulla riga di comando.
  • Un'opzione importante --fabfile=PATH che ti aiuta a specificare un file del modulo Python diverso da importare diverso da fabfile.py.
  • Per specificare un nome utente da utilizzare durante la connessione a host remoti, utilizzare l'opzione --user=USER.
  • Per utilizzare una password per l'autenticazione e/o sudo, utilizzare l'opzione --password=PASSWORD.
  • Per stampare informazioni dettagliate sul comando NOME, utilizza l'opzione --display=NAME.
  • Per visualizzare i formati usa l'opzione --list, scelte: breve, normale, nidificato, usa l'opzione --list-format=FORMAT.
  • Per stampare un elenco di possibili comandi e uscire, includi l'opzione --list.
  • Puoi specificare il percorso del file di configurazione da utilizzare utilizzando l'opzione --config=PATH.
  • Per visualizzare un output di errore colorato, utilizza --colorize-errors.
  • Per visualizzare il numero di versione del programma e uscire, utilizza l'opzione --version.
Riepilogo

Fabric è una potente libreria Python che semplifica l'esecuzione dei comandi remoti su SSH, fornendo un approccio Python intuitivo. La sua capacità di semplificare attività complesse e automatizzare la gestione del sistema lo rende uno strumento prezioso per amministratori di sistema, sviluppatori e professionisti DevOps.

Che tu stia gestendo un singolo server o orchestrando una distribuzione su larga scala, Fabric può aiutarti a svolgere il lavoro in modo efficiente ed efficace.