Python fabric远程自动部署简介

2.1.    Hello,fab

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

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

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

1 # fab hello
2  
3 Hello fab!

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

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

4. 参数传递

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

2.2.    本地操作

执行本地操作命令使用local

1. fabfile.py脚本内容如下

1 from fabric.api import local
2  
3   
4  
5 def test():
6  
7 local('cd /home/')
8  
9 local('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  
7 8

2.3.    远程操作

执行远程操作命令使用run

1. fabfile.py脚本内容如下

1 from fabric.api import cd,run,env,hosts
2  
3 env.hosts=['192.168.85.99:22','192.168.85.101:22']
4  
5 env.password='test'
6  
7 def test():
8  
9 with cd('/home'):
10  
11 run("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  
19 Disconnecting from 192.168.85.99... done.
20  
21 Disconnecting from 192.168.85.101... done.

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

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

posted @ 2015-06-25 23:45  叉叉敌  阅读(352)  评论(0编辑  收藏  举报