Un guide simple pour démarrer avec l'outil de déploiement automatisé Python Fabric

高洛峰
Libérer: 2017-01-16 17:43:16
original
1386 Les gens l'ont consulté

Fabric est un outil Python basé sur le protocole SSH. Par rapport à la méthode traditionnelle ssh/scp, l'écriture de commandes de gestion dans la syntaxe Python est plus lisible et plus facile à développer. La gestion d'une ou plusieurs machines est comme une opération locale.

Adresse du site Web officiel : http://fabfile.org

Installation
Omettre le processus d'installation des outils de gestion Python et pip

pip install fabric
Copier après la connexion

Vérifier si l'installation est réussi
Entrez dans le mode d'édition python et entrez le code S'il n'y a pas d'erreur, cela signifie une installation réussie

from fabric.api import local
Copier après la connexion

version fabric hello world
fichier par défaut de fabric fabfile.py Bien sûr. , si vous ne souhaitez pas utiliser ce nom, vous devez ajouter le paramètre -f

Créer le fichier fabfile.py

vim fabrile.py
Copier après la connexion

Modifier le code

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

Exécutez le code

fab hello
Copier après la connexion

Vous pouvez utiliser fab -l pour afficher la tâche exécutable, actuellement bonjour la fonction
Exécuter le résultat

[localhost] local: echo "hello world!"
hello world!
Done.
Copier après la connexion

Méthode de maintenance traditionnelle :

$ ssh x.x.x.x 'uname -a' -- 输出略
Copier après la connexion

Exemple de Fabric :

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

Intuitivement, il semble que beaucoup de code doit être écrit par rapport à la méthode ssh, mais il y a moins de liens contrôlables dans la méthode ssh Par exemple, si vous souhaitez déterminer si un service a été démarré, démarrez-le s'il n'a pas été démarré, etc. L'approche impérative ssh est un peu plus gênante. (Bien sûr, vous pouvez écrire un script sur la machine exploitée et appeler ce script via ssh)

Parlons de quelques avantages de Fabric :

Définition du rôle

Facile à coder Lire

encapsule les opérations locales et distantes (avez-vous toujours besoin d'encapsuler vous-même les opérations système/popen/ssh ?)

Paramètres flexibles (spécifier dynamiquement l'hôte/le rôle, etc., et exécution simultanée basée sur le multitraitement)

Sortie complète du journal

En fait, ceux répertoriés dans le travail quotidien ont essentiellement une encapsulation similaire, mais il existe un outil mature prêt à l'emploi, pourquoi ne pas l'utiliser ? Droite.

Configurations couramment utilisées :

env.host — IP de l'hôte, bien sûr, vous pouvez également spécifier le paramètre -H

env.password — Mot de passe, veuillez l'ignorer si vous avez créé un canal

env.roledefs - Regroupement de rôles, par exemple : {'web' : ['x', 'y'], 'db' : ['z']>

fab -l -- Afficher les tâches (commandes) disponibles

fab -H -- Spécifier l'hôte, prendre en charge plusieurs hôtes séparés par des virgules

fab -R -- Spécifier le rôle, prendre en charge plusieurs

fab -P                                                                                                                                                                                                                                                               Le fichier d'entrée par défaut est : fabfile/fabfile.py

Pour plus d'informations, veuillez vous référer à : fab --help

Fonctions couramment utilisées :

local('pwd')      — Commande locale

lcd('/tmp') - Changer de répertoire local

cd('/tmp') - Changer de répertoire distant

run('uname -a ') - Exécutez la commande à distance

Sudo ('/ETC/Init.d/Nginx Start ') -Endonnez le SUDO à distance, faites attention à l'option PTY

Exemple 1 : Gérer le service Nginx distant

Exemple 2 : Basé sur les rôles
$ cat fabfile.py
Copier après la connexion
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')
Copier après la connexion
$ fab --list   -- 查看可用命令
Available commands:
 
  nginx_start nginx start
  nginx_stop  nginx stop
 
$ fab -H x.x.x.x nginx_start -- 启动 nginx
Copier après la connexion

Exemple 3 : Mélanger les opérations locales et à distance
$ cat fabfile.py
Copier après la connexion
Copier après la connexion
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')
Copier après la connexion
$ 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
Copier après la connexion

Est-ce qu'ils ressemblent tous à des locaux ? Droite.

$ cat fabfile
Copier après la connexion
Exemple 4 : Plusieurs serveurs cibles
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') # 远程解压
Copier après la connexion
Même mot de passe ou saisie manuelle :


env.hosts = ['root@ip1:22',root@ip2:22]
Copier après la connexion
Mots de passe différents ou ne souhaitez pas saisir manuellement (ce méthode également Un ensemble de serveurs avec différents rôles peut être défini) :


Pour plus d'articles connexes sur le guide de démarrage simple de Fabric, l'outil de déploiement automatisé Python, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal