您的位置:首页 > 编程语言 > Python开发

Python fabric远程自动部署简介

2015-06-25 23:45 609 查看
版权声明:转载注明出处 https://blog.csdn.net/weixin_42514606/article/details/86588388

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 Rikies 阅读(...) 评论(...) 编辑 收藏
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: