Python fabric远程自动部署简介

Python fabric远程自动部署简介

2.1.    Hello,fab

1. 在当前目录下新建文件fabfile.py,输入内容如下

1def hello():
2 
3    print("Hello fab!")

2. 执行命令fab hello,结果如下

1# fab hello
2 
3Hello fab!

3. 文件名不为fabfile.py时需进行指定

1# mv fabfile.py test.py
2 
3# fab hello
4 
5  
6 
7Fatal error: Couldn't find any fabfiles!
8 
9  
10 
11Remember that -f can be used to specify fabfile path, and use -h for help.
12 
13  
14 
15# fab -f test.py hello
16 
17Hello fab!

4. 参数传递

1#vi fabfile.py
2 
3def hello(name):
4 
5        print 'Hello %s!'%name
6 
7  
8 
9# fab hello:name=fab
10 
11Hello fab!
12 
13  
14 
15  
16 
17# fab hello:fab
18 
19Hello fab!

2.2.    本地操作

执行本地操作命令使用local

1. fabfile.py脚本内容如下

1from fabric.api import local
2 
3  
4 
5def test():
6 
7local('cd /home/')
8 
9local('ls -l|wc -l')

2. 执行命令fab test,结果如下

1# fab test
2 
3[localhost] local: cd /home/
4 
5[localhost] local: ls -l|wc -l
6 
78

2.3.    远程操作

执行远程操作命令使用run

1. fabfile.py脚本内容如下

1from fabric.api import cd,run,env,hosts
2 
3env.hosts=['192.168.85.99:22','192.168.85.101:22']
4 
5env.password='test'
6 
7def test():
8 
9with cd('/home'):
10 
11run("du -sh")

2. 执行命令fab test,结果如下

1# fab test
2 
3[192.168.85.99:22] Executing task 'test'
4 
5[192.168.85.99:22] run: du -sh
6 
7[192.168.85.99:22] out: 392G      .
8 
9[192.168.85.99:22] out:
10 
11[192.168.85.101:22] Executing task 'test'
12 
13[192.168.85.101:22] run: du -sh
14 
15[192.168.85.101:22] out: 5.6G     .
16 
17[192.168.85.101:22] out:
18 
19Disconnecting from 192.168.85.99... done.
20 
21Disconnecting from 192.168.85.101... done.

3. 多服务器混合,需要在不同服务器进行不同操作时,可参考如下脚本

1from fabric.api import env,roles,run,execute
2 
3env.roledefs = {
4 
5'server1': ['root@192.168.85.99:22',],
6 
7'server2': ['root@192.168.85.100:22', ]
8 
9}
10 
11env.password = 'test'
12 
13@roles('server1')
14 
15def task1():
16 
17run('ls /home/ -l | wc -l')
18 
19@roles('server2')
20 
21def task2():
22 
23run('du -sh /home')
24 
25def test():
26 
27execute(task1)
28 
29execute(task2)

结果如下

1# fab test
2 
3[root@192.168.85.99:22] Executing task 'task1'
4 
5[root@192.168.85.99:22] run: ls /home/ -l | wc -l
6 
7[root@192.168.85.99:22] out: 27
8 
9[root@192.168.85.99:22] out:
10 
11[root@192.168.85.100:22] Executing task 'task2'
12 
13[root@192.168.85.100:22] run: du -sh /home
14 
15[root@192.168.85.100:22] out: 1.4G   /home
16 
17[root@192.168.85.100:22] out:
18 
19Disconnecting from 192.168.85.99... done.
20 
21Disconnecting from 192.168.85.100... done.

 

3.    参考文章

上面只是对Python+fabric自动部署脚本编写方法的简单介绍,在实际应用过程中根据具体需求编写相应的脚本时可以参考如下文章:

1. http://docs.fabfile.org/en/latest/index.html

2. http://wklken.me/posts/2013/03/25/python-tool-fabric.html

« 上一篇: 使用远程接口库进一步扩展Robot Framework的测试能力
» 下一篇: 使用RobotFramework的DataBaseLibrary(Java实现)
posted @ Rikies 阅读( 86) 评论( 0) 编辑 收藏
posted @   叉叉敌  阅读(86)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示