码迷,mamicode.com
首页 > 编程语言 > 详细

python fabric模块入门

时间:2018-03-16 18:44:22      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:默认   hosts   下载   continue   files   文件名   环境变量   角色   use   

Fabric 是一个 Python (2.5-2.7) 库和命令行工具,用来流水线化执行 SSH 以部署应用或系统管理任务。

 

安装:

pip install fabric

 

首先来一个入门通用demo,hello world。

文件:hello_world.py

# coding: utf-8

def hello():
    print Hello world!

运行结果:

默认查找当前目录下fabfile.py文件,若文件名非fabfile.py,则需要使用-f指定文件。

$ fab -f hello_world.py hello
Hello world!

Done.

 

env(环境变量)对象说明:

env.hosts   #定义目标主机,可以用IP或主机名表示,以python的列表形式定义。如env.hosts=[192.168.1.21,192.168.1.22]
env.exclude_hosts   #排除指定主机,如env.exclude_hosts=[192.168.1.21]
env.user   #定义用户名,如env.user=root
env.port   #定义端口,默认为22,如env.port=22
env.password   #定义密码,如env.password=123456
env.passwords  #定义多个密码,不同主机对应不同密码,如:env.passwords = {root@192.168.1.21:22:123456,root@192.168.1.22:22:654321}
env.gateway   #定义网关(中转、堡垒机)IP,如env.gateway=192.168.1.23
env.roledefs   #定义角色分组,比如web组合db组主机区分开来:env.roledefs = {webserver:[192.168.1.21,192.168.1.22],dbserver:[192.168.1.25,192.168.1.26]}

env.deploy_release_dir   #自定义全局变量,格式:env. + 变量名称,如env.age,env.sex等

其中roledefs使用demo如下:

env.roledefs = {‘front:[192.168.1.111],api:[192.168.1.112]}

@roles(front)
def nginx_restart():
    run(‘service nginx restart)

@roles(front, api‘)
def uptime():
    run(uptime)

 

常用API:

local    #执行本地命令,如local(‘uname -s‘)
lcd      #切换本地目录,如lcd(‘/home‘)
cd       #切换远程目录
run     #执行远程命令
sudo   #sudo方式执行远程命令,如sudo(‘/etc/init.d/httpd start‘)
put     #上次本地文件导远程主机,如put(‘/home/user.info‘,‘/data/user.info‘)
get     #从远程主机下载文件到本地,如:get(‘/data/user.info‘,‘/home/user.info‘)
prompt  #获得用户输入信息,如:prompt(‘please input user password:‘)
confirm  #获得提示信息确认,如:confirm(‘Test failed,Continue[Y/N]?‘)
reboot   #重启远程主机,如:reboot()

@task   #函数修饰符,标识的函数为fab可调用的,非标记对fab不可见,纯业务逻辑
@runs_once   #函数修饰符,标识的函数只会执行一次,不受多台主机影响

 

Demo(demo.py):

运行命令:fab -f demo.py list

# coding: utf-8
from fabric.api import *


env.user = root
env.roledefs = {
        api: [10.211.55.5:22],
        }
env.passwords = {
        root@10.211.55.5:22: linjianfeng,
        }


def list_files():
    run(ls -l)

@task  # 使用@task对fab命令可见,其他没有使用@task标记的函数对fab命令不可用,fab -f demo.py -l可查看开放函数
@roles(api)
def list():
    list_files()

 

python fabric模块入门

标签:默认   hosts   下载   continue   files   文件名   环境变量   角色   use   

原文地址:https://www.cnblogs.com/yuansiwu/p/8583637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!