Fabric: automatitzeu les vostres tasques d'administració de Linux i desplegaments d'aplicacions mitjançant SSH


Quan es tracta de gestionar màquines remotes i de desplegament d'aplicacions, hi ha diverses eines de línia d'ordres, encara que moltes tenen un problema comú de manca de documentació detallada.

En aquesta guia, explicarem els passos per introduir i començar a utilitzar fabric per millorar l'administració de grups de servidors.

Fabric és una biblioteca Python i una potent eina de línia d'ordres per dur a terme tasques d'administració del sistema, com ara executar ordres SSH en diverses màquines i desplegament d'aplicacions.

Llegiu també: Utilitzeu Shell Scripting per automatitzar les tasques de manteniment del sistema Linux

Tenir coneixements de Python pot ser útil a l'hora d'utilitzar Fabric, però segurament no serà necessari.

Raons per les quals hauríeu de triar el teixit per sobre d'altres alternatives:

  1. Simplicitat
  2. Està ben documentat
  3. No cal que aprenguis un altre idioma si ja ets un noi de Python.
  4. Fàcil d'instal·lar i utilitzar.
  5. És ràpid en les seves operacions.
  6. Admet l'execució remota paral·lela.

Com instal·lar l'eina d'automatització de teixits a Linux

Una característica important del teixit és que les màquines remotes que necessiteu administrar només necessiten tenir instal·lat el servidor OpenSSH estàndard. Només necessiteu determinats requisits instal·lats al servidor des del qual esteu administrant els servidors remots abans de poder començar.

  1. Python 2.5+ amb les capçaleres de desenvolupament
  2. Python-setuptools i pip (opcional, però preferit) gcc

Fabric s'instal·la fàcilment mitjançant pip (molt recomanable), però també és possible que preferiu triar el vostre gestor de paquets predeterminat apt-get to install fabric package, normalment anomenat fabric o python-fabric.

Per a les distribucions basades en RHEL/CentOS, heu de tenir el dipòsit EPEL instal·lat i habilitat al sistema per instal·lar el paquet de teixit.

# yum install fabric   [On RedHat based systems]  
# dnf install fabric   [On Fedora 22+ versions]

Per a Debian i els seus derivats com Ubuntu i Mint, els usuaris poden simplement fer apt-get per instal·lar el paquet fabric tal com es mostra:

# apt-get install fabric

Si voleu instal·lar la versió de desenvolupament de fabric, podeu utilitzar pip per agafar la branca mestra més recent.

# yum install python-pip       [On RedHat based systems] 
# dnf install python-pip       [On Fedora 22+ versions]
# apt-get install python-pip   [On Debian based systems]

Un cop pip s'hagi instal·lat correctament, podeu utilitzar pip per agafar l'última versió de la tela tal com es mostra:

# pip install fabric

Com utilitzar Fabric per automatitzar les tasques d'administració de Linux

Així que comencem a fer servir Fabric. Durant el procés d'instal·lació, es va afegir un script de Python anomenat fab a un directori del vostre camí. El fab script fa tot el treball quan s'utilitza tela.

Per convenció, heu de començar creant un fitxer Python anomenat fabfile.py amb el vostre editor preferit. Recordeu que podeu donar a aquest fitxer un nom diferent com vulgueu, però haureu d'especificar el camí del fitxer de la següent manera:

# fabric --fabfile /path/to/the/file.py

Fabric utilitza fabfile.py per executar tasques. El fabfile hauria d'estar al mateix directori on executeu l'eina Fabric.

Exemple 1: primer creem un Hello World bàsic.

# vi fabfile.py

Afegiu aquestes línies de codi al fitxer.

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

Deseu el fitxer i executeu l'ordre següent.

# fab hello

Vegem ara un exemple d'un fabfile.py per executar l'ordre de temps d'activitat a la màquina local.

Exemple 2: obriu un fitxer fabfile.py nou de la manera següent:

# vi fabfile.py

I enganxeu les següents línies de codi al fitxer.

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

A continuació, deseu el fitxer i executeu l'ordre següent:

# fab uptime

L'API de Fabric utilitza un diccionari de configuració que és l'equivalent de Python d'una matriu associativa coneguda com a env, que emmagatzema valors que controlen el que fa Fabric.

El env.hosts és una llista de servidors en els quals voleu executar tasques de Fabric. Si la vostra xarxa és 192.168.0.0 i voleu gestionar l'amfitrió 192.168.0.2 i 192.168.0.6 amb el vostre fabfile, podeu configurar env.hosts de la següent manera:

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

La línia de codi anterior només especifica els amfitrions en què executareu les tasques de Fabric però no feu res més. Per tant, podeu definir algunes tasques, Fabric ofereix un conjunt de funcions que podeu utilitzar per interactuar amb les vostres màquines remotes.

Tot i que hi ha moltes funcions, les més utilitzades són:

  1. executa: que executa una ordre de shell en una màquina remota.
  2. local: que executa l'ordre a la màquina local.
  3. sudo: que executa una ordre de shell en una màquina remota, amb privilegis de root.
  4. Obtén: que baixa un o més fitxers d'una màquina remota.
  5. Put: que penja un o més fitxers a una màquina remota.

Exemple 3: per fer ressò d'un missatge en diverses màquines, creeu un fabfile.py com el següent.

#!/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 executar les tasques, executeu l'ordre següent:

# fab echo

Exemple 4: podeu millorar el fabfile.py que heu creat anteriorment per executar l'ordre uptime a la màquina local, de manera que executi l'ordre uptime i també comproveu l'ús del disc mitjançant l'ordre df en múltiples màquines de la següent manera:

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

Deseu el fitxer i executeu l'ordre següent:

# fab uptime
# fab disk_space

Exemple 4: Vegem un exemple per desplegar el servidor LAMP (Linux, Apache, MySQL/MariaDB i PHP) en un servidor Linux remot.

Escriurem una funció que permetrà instal·lar LAMP de forma remota mitjançant privilegis root.

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

Deseu el fitxer i executeu l'ordre següent:

# fab deploy_lamp

Nota: a causa de la gran producció, no ens és possible crear un screencast (gif animat) per a aquest exemple.

Ara podeu automatitzar les tasques de gestió del servidor Linux mitjançant Fabric i les seves característiques i exemples anteriors...

  1. Podeu executar fab –help per veure informació d'ajuda i una llarga llista d'opcions de línia d'ordres disponibles.
  2. Una opció important és –fabfile=PATH que us ajuda a especificar un fitxer de mòdul Python diferent per importar un altre que fabfile.py.
  3. Per especificar un nom d'usuari per utilitzar quan us connecteu a amfitrions remots, feu servir l'opció –user=USER.
  4. Per utilitzar la contrasenya per a l'autenticació i/o sudo, utilitzeu l'opció –password=PASSWORD.
  5. Per imprimir informació detallada sobre l'ordre NAME, utilitzeu l'opció –display=NAME.
  6. Per veure els formats, utilitzeu l'opció –list, opcions: curt, normal, imbricat, utilitzeu l'opció –list-format=FORMAT.
  7. Per imprimir la llista de possibles ordres i sortir, incloeu l'opció –list.
  8. Podeu especificar la ubicació del fitxer de configuració que voleu utilitzar mitjançant l'opció –config=PATH.
  9. Per mostrar una sortida d'error amb colors, utilitzeu –colorize-errors.
  10. Per veure el número de versió del programa i sortir-ne, utilitzeu l'opció –version.

Resum

La tela és una eina potent i està ben documentada i ofereix un ús fàcil per als novells. Podeu llegir la documentació completa per entendre-la millor. Si teniu informació per afegir o en cas d'error que trobeu durant la instal·lació i l'ús, podeu deixar un comentari i trobarem maneres de solucionar-los.

Referència: documentació del teixit