Heim  >  Artikel  >  Backend-Entwicklung  >  Eine einfache Anleitung für den Einstieg in das automatisierte Python-Bereitstellungstool Fabric

Eine einfache Anleitung für den Einstieg in das automatisierte Python-Bereitstellungstool Fabric

高洛峰
高洛峰Original
2017-01-16 17:43:161347Durchsuche

Fabric ist ein Python-Tool, das auf dem SSH-Protokoll basiert. Das Schreiben von Verwaltungsbefehlen in Python-Syntax ist besser lesbar und einfacher zu erweitern. Die Verwaltung einer einzelnen oder mehrerer Maschinen ähnelt einer lokalen Operation.

Offizielle Website-Adresse: http://fabfile.org

Installation
Überspringen Sie den Installationsprozess von Python- und Pip-Verwaltungstools

pip install fabric

Überprüfen Sie, ob die Installation erfolgt ist ist erfolgreich
Rufen Sie den Python-Bearbeitungsmodus auf und geben Sie den Code ein. Wenn keine Fehler vorliegen, bedeutet dies eine erfolgreiche Installation

from fabric.api import local

Fabric-Version Hallo Welt
Fabric-Standarddatei fabfile.py Natürlich , wenn Sie diesen Namen nicht verwenden möchten, müssen Sie den Parameter -f hinzufügen

Erstellen Sie die Datei fabfile.py

vim fabrile.py

Bearbeiten Sie den Code

#coding:utf-8
from fabric.api import local#
def hello():
   # local函数用来执行本地命令
   local('echo "hello wolrd!"')

Führen Sie den Code aus

fab hello

Sie können fab -l verwenden, um die ausführbare Aufgabe anzuzeigen, derzeit Hallo-Funktion
Ergebnis ausführen

[localhost] local: echo "hello world!"
hello world!
Done.

Traditionelle Wartungsmethode:

$ ssh x.x.x.x 'uname -a' -- 输出略

Fabric-Beispiel:

$ cat fabfile.py
from fabric.api import run
def uname():
  run('uname -a')
$ fab -H x.x.x.x uname -- 输出略

Intuitiv scheint es, dass viel mehr Code geschrieben werden muss als bei der SSH-Methode, aber es gibt weniger kontrollierbare Links die SSH-Methode: Wenn Sie beispielsweise feststellen möchten, ob ein Dienst gestartet wurde, starten Sie ihn, wenn er nicht gestartet wurde usw. Der SSH-Imperativ-Ansatz ist etwas problematischer. (Natürlich können Sie ein Skript auf der zu bedienenden Maschine schreiben und dieses Skript über ssh aufrufen)

Lassen Sie uns über ein paar Vorteile von Fabric sprechen:

Rollendefinition

Einfach zu codierendes Lesen

kapselt lokale und Remote-Vorgänge (müssen Sie System-/Popen-/SSH-Vorgänge noch selbst kapseln?)

Flexible Parameter (Host/Rolle usw. dynamisch angeben usw.) gleichzeitige Ausführung basierend auf Multiprocessing)

Vollständige Protokollausgabe

Wie oben aufgeführt, gibt es in der täglichen Arbeit zwar grundsätzlich ähnliche Kapselungen, aber es gibt ein ausgereiftes Tool, das man nicht verwenden sollte Es? Rechts.

Häufig verwendete Konfigurationen:

env.host – Host-IP, natürlich können Sie auch den -H-Parameter angeben

env.password – Passwort, bitte ignorieren Sie es, wenn Sie haben einen Kanal eingerichtet

env.roledefs – Rollengruppierung, zum Beispiel: {'web': ['x', 'y'], 'db': ['z']}

fab -l – Verfügbare Aufgaben (Befehle) anzeigen

fab -H – Host angeben, mehrere durch Kommas getrennte Hosts unterstützen

fab -R – Rolle angeben, mehrere

fab -p Die Standardeintragsdatei lautet: fabFile/fabFile.py

Weitere Informationen finden Sie unter: Fab -Help

häufig verwendete Funktionen:

local('pwd')       – Lokaler Befehl

lcd('/tmp') – Lokales Verzeichnis wechseln

cd('/tmp') – Remote-Verzeichnis wechseln

run('uname -a ')                                                                                                                                                                                                                                                         🎜>

Beispiel 2: Rollenbasiert

Beispiel 3: Lokal mischen und Fernoperationen

$ cat fabfile.py
from fabric.api import *
@task
def nginx_start():
  ''' nginx start '''
sudo('/etc/init.d/nginx start')
 
@task
def nginx_stop():
  ''' nginx stop '''
  sudo('/etc/init.d/nginx stop')
$ fab --list   -- 查看可用命令
Available commands:
 
  nginx_start nginx start
  nginx_stop  nginx stop
 
$ fab -H x.x.x.x nginx_start -- 启动 nginx
Sehen sie alle wie Einheimische aus? Rechts.

Beispiel 4: Mehrere Zielserver
$ cat fabfile.py
Gleiches Passwort oder manuelle Eingabe:
from fabric.api import *
env.roledefs = {'nginx': ['x.x.x.x', 'y.y.y.y'], 'mysql': 'z.z.z.z'}
@task
def mysql_start()
  ''' mysql start '''
  sudo('/etc/init.d/mysql start')
$ fab --list   -- 查看可用命令
Available commands:
 
  nginx_start nginx start
  nginx_stop  nginx stop
  mysql_start mysql start
 
$ fab -R nginx nginx_start -- 启动 nginx
$ fab -R mysql mysql_start -- 启动 mysql

$ cat fabfile
def hello():
  ''' test hello '''
  with lcd('/tmp'): # 切换到 /tmp 目录下
    local('svn co http://xxx xxx') # check 代码到本地
    local('tar czf xxx.tar.gz xxx/') # 压缩本地包
    put('xxx.tar.gz', '/tmp') # 上传压缩包到远程 /tmp 目录下
  with cd('/tmp'):  # 切换到远程 /tmp 目录
    run('tar zxf xxx.tar.gz') # 远程解压
Unterschiedliche Passwörter oder Sie möchten nicht manuell eingeben (dies Methode auch Es kann eine Reihe von Servern mit unterschiedlichen Rollen definiert werden):

Weitere verwandte Artikel zum einfachen Leitfaden für die ersten Schritte von Fabric, dem automatisierten Python-Bereitstellungstool, finden Sie auf der chinesischen PHP-Website !

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn