前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python fabric远程自动部署简介

Python fabric远程自动部署简介

作者头像
叉叉敌
发布2022-03-11 14:21:12
4300
发布2022-03-11 14:21:12
举报
文章被收录于专栏:Chasays

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python fabric远程自动部署简介
    • 2.1. Hello,fab
      • 2.2. 本地操作
        • 2.3. 远程操作
          • 3. 参考文章
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档