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

高洛峰
Freigeben: 2017-01-16 17:43:16
Original
1386 Leute haben es durchsucht

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
Nach dem Login kopieren

Ü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
Nach dem Login kopieren

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
Nach dem Login kopieren

Bearbeiten Sie den Code

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

Führen Sie den Code aus

fab hello
Nach dem Login kopieren

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.
Nach dem Login kopieren

Traditionelle Wartungsmethode:

$ ssh x.x.x.x 'uname -a' -- 输出略
Nach dem Login kopieren

Fabric-Beispiel:

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

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 < unterstützen 🎜>

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
Nach dem Login kopieren
from fabric.api import *
@task
def nginx_start():
  &#39;&#39;&#39; nginx start &#39;&#39;&#39;
sudo(&#39;/etc/init.d/nginx start&#39;)
 
@task
def nginx_stop():
  &#39;&#39;&#39; nginx stop &#39;&#39;&#39;
  sudo(&#39;/etc/init.d/nginx stop&#39;)
Nach dem Login kopieren
$ fab --list   -- 查看可用命令
Available commands:
 
  nginx_start nginx start
  nginx_stop  nginx stop
 
$ fab -H x.x.x.x nginx_start -- 启动 nginx
Nach dem Login kopieren
Sehen sie alle wie Einheimische aus? Rechts.

Beispiel 4: Mehrere Zielserver
$ cat fabfile.py
Nach dem Login kopieren
Nach dem Login kopieren
Gleiches Passwort oder manuelle Eingabe:
from fabric.api import *
env.roledefs = {&#39;nginx&#39;: [&#39;x.x.x.x&#39;, &#39;y.y.y.y&#39;], &#39;mysql&#39;: &#39;z.z.z.z&#39;}
@task
def mysql_start()
  &#39;&#39;&#39; mysql start &#39;&#39;&#39;
  sudo(&#39;/etc/init.d/mysql start&#39;)
Nach dem Login kopieren
$ 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
Nach dem Login kopieren

$ cat fabfile
Nach dem Login kopieren
def hello():
  &#39;&#39;&#39; test hello &#39;&#39;&#39;
  with lcd(&#39;/tmp&#39;): # 切换到 /tmp 目录下
    local(&#39;svn co http://xxx xxx&#39;) # check 代码到本地
    local(&#39;tar czf xxx.tar.gz xxx/&#39;) # 压缩本地包
    put(&#39;xxx.tar.gz&#39;, &#39;/tmp&#39;) # 上传压缩包到远程 /tmp 目录下
  with cd(&#39;/tmp&#39;):  # 切换到远程 /tmp 目录
    run(&#39;tar zxf xxx.tar.gz&#39;) # 远程解压
Nach dem Login kopieren
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 !

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage