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

    文章

    44

    浏览量

    7301
  • python
    +关注

    关注

    56

    文章

    4807

    浏览量

    84997
  • API接口
    +关注

    关注

    1

    文章

    84

    浏览量

    10490

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

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

收藏 人收藏

    评论

    相关推荐

    华为网络工程师培训教材

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

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

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

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

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

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

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

    合格的网络工程师必会实验大全

    合格的网络工程师必会实验大全.pdf合格的网络工程师必会实验大全.pdf
    发表于 10-30 17:46 0次下载

    2004-2012网络工程师试题

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

    什么是网络工程师

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

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

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

    16个网络工程师常用的网络故障排除工具

    网络故障排除对于网络技术专家和网络工程师是颇具挑战的工作。每当添加新的设备或网络发生变更时,新的问题就会出现,而且很难确定问题出在哪里。每一位网络工
    的头像 发表于 08-25 11:37 1.1w次阅读

    网络工程师学Python-for循环

    Python 中,for 循环是一种常用的结构,用于遍历序列(如列表、元组、字符串)中的元素。
    的头像 发表于 04-19 15:47 983次阅读

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

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

    网络工程师学Python-文件处理

    当涉及到 Python 文件处理时, 我们通常会涉及到文件的读取和写入, 以及文件的操作和处理。
    的头像 发表于 04-27 09:21 701次阅读

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

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

    网络工程师学Python-远程连接管理Telnet

    Python Telnet是一种用于远程连接和管理网络设备的Python库。
    的头像 发表于 04-28 09:47 993次阅读

    网络工程师学Python-多线程技术简述

    Python多线程是一种并发编程的方式,通过使用多个线程在同一时间内执行多个任务
    的头像 发表于 04-28 09:49 589次阅读
    <b class='flag-5'>网络工程师学</b><b class='flag-5'>Python-</b>多线程技术简述