Python 自动化部署 fabric 使用详解

写在前面:本文使用的是Python2.7 + fabric1.14
目前fabric还是使用Python2居多

1、fabric入门

建立的文件的文件名尽量为fabfile.py
内容为:

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

@task  # 装饰器,表示是一个任务
@runs_once # 表示只执行一次
def myrun():
    run('uname -s')

然后执行

fab -H loaclhost myrun  # 会看到相应输出

参数含义:
-H 制定主机,这里制定的主机为127.0.0.1
myrun 自己在文件中定义的方法

如果文件名不是fabfile.py 如文件名为test.py
那么执行命令变为

fab -H loaclhost -f test.py myrun
2、高级用法

文件内容为:

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

env.user = 'aeasringnar'
env.hosts = ['127.0.0.1']
env.password = 'zxc.123'

@task  # 装饰器,表示是一个任务
@runs_once # 表示只执行一次
def myrun():
    run('uname -s')

这个时候直接运行:

fab myrun  # 即可
3、fabric进阶 - 常用参数

-l:显示定义好的任务函数名,例如:本例运行fab -l 之后的输出为 myrun
-f:指定fab入口文件,默认入口文件为fabfile.py
-H:指定目标主机,多台主机用”,”隔开

4、fabric进阶 - 常用api

local:执行本地命令,如:local(‘uname -s’)
lcd:切换本地目录,如:lcd(‘/home’)
cd:切换远程目录,如:cd(‘/etc’)
run:执行远程命令(最常用),如:run(‘uname -r’) 输出主机内核版本号
sudo:sudo的当时执行远程命令,如:sudo(‘touch test.txt’)
put:上传本地文件到远程主机,如:put(‘/home/test.txt’,’/home/text.txt’)
get:从远程主机下载到本地,如:get(‘/home/test.txt’,’/home/text.txt’)
reboot:重启远程计算机,如:reboot()
@task:装饰器函数,标识的函数为fab可调用的,非标记的对fab不可见,纯业务逻辑。
@runs_once:标识的函数只会执行一次,不受多台主机影响

4、fabric进阶 - 全局属性设定

env.hosts:定义目标主机,如:env.hosts = [‘127.0.0.10’,’192.168.17.7’]
env.user:定义用户名,如:env.user = ‘root’
env.port:定义目标主机端口,默认为22,如:env.port = ‘22’
env.password:定义密码,如:env.password = ‘test’
env.passwords:不同的主机不同的密码,注意:这里必须是用户名@主机:端口 然后是密码,缺一不可,否则一直要输入密码,如:env.passwords = {‘[email protected]:22’:’test’,’[email protected]:22’:’python’}

你可能感兴趣的:(Python,Linux)