0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

网络工程师学Python-开源自动化部署工具Fabric

网络技术干货圈 来源:网络技术干货圈 2023-04-28 09:54 次阅读

Python Fabric是一个基于Python的开源自动化部署工具,可以简化管理远程服务器的过程。它允许您在一个或多个远程主机上执行命令、上传/下载文件、创建和管理虚拟环境等。

安装

在开始使用Fabric之前,您需要先安装它。您可以使用pip来安装它:

pipinstallfabric

使用

Fabric是一个命令行工具,可以使用命令fab来运行Fabric任务。它使用fabfile.py文件定义任务,该文件包含一个或多个Python函数,这些函数代表要执行的任务。

下面是一个示例fabfile.py文件:

fromfabricimportConnection

defdeploy(c):
withc.cd('/var/www/html'):
c.run('gitpulloriginmaster')
c.sudo('systemctlrestarthttpd')

defuptime(c):
result=c.run('uptime')
print(result.stdout.strip())

在上述示例中,我们定义了两个任务:deploy和uptime。deploy任务使用Git从仓库拉取代码并重启Apache服务。uptime任务仅仅执行uptime命令并打印输出。

要运行任务,您可以在终端中使用以下命令:

fabdeploy-Huser@host
fabuptime-Huser@host

在上述示例中,-H标志指定远程主机的地址和用户名。如果您有多个主机需要执行相同的任务,您可以使用逗号分隔它们:

fabdeploy-Huser1@host1,user2@host2,user3@host3

您还可以使用--prompt-for-login-password选项来提示输入密码,或使用SSH密钥进行身份验证。

高级用法

Fabric还提供了许多高级选项,例如并行执行任务、批量部署、使用Fabric API等。以下是一些示例:

并行执行任务

fromfabricimportConnection
fromfabricimportConfig

config=Config(overrides={'run':{'pty':True}})
conn1=Connection('user@host1',config=config)
conn2=Connection('user@host2',config=config)
conn3=Connection('user@host3',config=config)

result=Connection.run(conn1,'ls',hide=True)
print(result.stdout.strip())

result=Connection.run(conn2,'ls',hide=True)
print(result.stdout.strip())

result=Connection.run(conn3,'ls',hide=True)
print(result.stdout.strip())

在上述示例中,我们使用Connection()方法创建三个连接对象,并使用Config()方法创建一个配置对象来启用伪终端模式。然后,我们使用run()方法在每个连接对象上执行ls命令,并打印输出。

使用Fabric API

fromfabricimportConnection,Config
fromfabric.apiimportenv,run,sudo

env.hosts=['user@host1','user@host2']
config=Config(overrides={'run':{'pty':True}})

withConnection(env.hosts[0],config=config)asc:
c.run('ls',hide=True)

withConnection(env.hosts[1],config=config)asc:
c.sudo('systemctlrestarthttpd')

在上述示例中,我们使用env模块设置主机列表,并使用Config()方法创建一个配置对象来启用伪终端模式。然后,我们使用Connection()方法创建连接对象,并在每个连接对象上执行命令。

结论

Python Fabric是一个非常强大的自动化部署工具,它可以大大简化管理远程服务器的过程。在本文中,我们列举了一些Python Fabric的示例,这些示例涵盖了从基本使用到高级用法的范围。希望这些示例能够帮助您开始使用Python Fabric,并在您的自动化部署工作中节省时间和精力。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Fabric
    +关注

    关注

    0

    文章

    43

    浏览量

    7210
  • python
    +关注

    关注

    51

    文章

    4677

    浏览量

    83473
  • API接口
    +关注

    关注

    1

    文章

    79

    浏览量

    10315

原文标题:网络工程师学Python-35-开源自动化部署工具Fabric

文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    华为网络工程师培训教材

    华为网络工程师培训教材
    发表于 08-16 17:27

    华为“网络工程师”培训专用教程

    华为“网络工程师”培训专用教程
    发表于 08-18 15:12

    急需 RF 网络工程师

    急需RF 网络工程师职业技能:熟悉 GSM/UMTS、KPI分析及参数优化,熟悉RNO工具,如M2000,PRS,Nastar,OMstar等职业要求:1、5年以上网优工作经验,有华为相关经验2
    发表于 06-02 22:13

    招聘自动化、电气自动化自动化控制工程师

    招聘自动化、电气自动化自动化控制工程师,挂证,不坐班,要求持有相关专业的中级职称证,用于我司资质申报工作上,凑资质人员申报资质,不存在风险。联系电话***,Q1580479594李经
    发表于 10-24 18:06

    华为3Com认证网络工程师(HCNE)测试题

    华为3Com认证网络工程师(HCNE)测试题
    发表于 10-09 08:52

    诚聘高级运维自动化工程师

    猎头职位:高级运维自动化工程师【合肥】工作职责: 1、根据基础架构运维管理需求,规划设计运维自动化平台和系统的架构并推进落实;2、负责现有自动化运维系统和工具的维护和完善; 3、负责运
    发表于 12-12 10:37

    【上海】猎头推荐职位-自动化测试工程师(java/python

    猎头职位:自动化测试工程师(java/python)工作职责:1.负责测试报告输出、项目风险评估,对测试结果负责;2.负责对产品进行接口测试/自动化测试/性能测试/安全测试等工作;3.
    发表于 06-28 17:37

    【北京】诚聘自动化测试工程师

    猎头招聘:自动化测试工程师(薪资:25-40 K/月)工作职责:1、负责硬件相关测试效率的提升;2、负责老化测试,长时间可靠性验证及其自动化测试工具的实现;3、输出测试报告,跟踪相关问
    发表于 12-05 16:15

    AIoT智能物联网工程师学习路线规划以及详细解析

    大家好,我是老白。今天给大家带来AIoT智能物联网工程师学习路线规划以及详细解析。AIoT智能物联网工程师学习路线详解AIoT学习路线规划学习阶段阶段名称主题 阶段一Python基础与科学计算掌握
    发表于 08-23 06:06

    Python成为软件工程师的最爱

    Python语言本身所具有的优势,决定了从事Python学习的开发工程师相较于其他编程语言,拥有更多岗位发展选择:◆ Web开发工程师◆ 人工智能
    发表于 11-27 10:33

    2004-2012网络工程师试题

    2004-2012网络工程师试题是工程师学习通关的必备书籍
    发表于 06-17 16:33 0次下载

    什么是网络工程师

    什么是网络工程师网络工程师就是通过学习和训练,掌握了网络技术的理论知识和操作技能的网络技术人员。网络工程师能够从事计算机信息系统的设计、建
    的头像 发表于 02-19 14:28 7160次阅读

    自动化网络工程有什么联系

    互联网时代,网络工程师有多种角色:他们可以是网络运营商,设计师,架构师,对等协调员和网络工具/自动化工程师等等。
    发表于 04-14 14:57 1393次阅读

    网络工程师学Python-文件打开

    Python中,可以使用open()内置函数打开文件,以执行一系列文件的操作。在本文中,将介绍Python中打开文件的基础知识及常用的打开模式。
    的头像 发表于 04-27 09:14 429次阅读

    网络工程师学Python-文件删除

    Python 文件删除是 Python 开发中常用的一项操作,本文将针对 Python 中的 os 模块提供多个示例,介绍如何删除不同类型的文件。
    的头像 发表于 04-27 09:24 323次阅读