`
wx1568016009
  • 浏览: 23553 次
文章分类
社区版块
存档分类
最新评论

Python自动化部署工具-Fabric

 
阅读更多

预计阅读6分钟

640?wx_fmt=jpeg

今天分享一个Python的自动化发布工具—Fabric。

我在前面文章「Linux系列开坑记(一)-常用的3个命令」说了tar,rsync,supervisor这三个,从打包上传备份上线,进程管理工具。

我相信细心的读者发现了,但是这里其实还缺一个工具。

那就是衔接这三个步骤的工具,它可以通过SSH,让我们在远端服务器执行shell命令更加方便,更加智能的与服务器进行交互。

除了与远端服务交互,也非常方便我们日常执行较为复杂,需要要定制化的Python函数。

安装

pip install Fabric # 安装

一个官网例子:

def hello(name='sitin'):
    print("Hello world %s!" % name)

使用fab执行一下效果如下:

640?wx_fmt=jpeg

这里面我们需要知道fab是fabric安装的命令行工具,我们主要是通过它进行操作。

我个人平时用的比较多的命令有:

run 远端执行命令

简单的脚本我觉得是已经够用了,复杂一点需要更多操作了,详情见后文。

部署步骤

通常情况下,作为一个Python工程师我们发布代码需要做的事儿常见的有以下几点:

  1. git pull 拉取最新代码,比如master分支(或者develop分支)

  2. tar 打包最新代码

  3. rsync增量同步到远端服务器,去掉一些不需要的本地目录

  4. 备份数据库或者备份代码

  5. supervisor指定重启远端一个或多个服务,通过交互式指令判断

  6. sentry查看日志正常与否

除了最后一步,这里面所有的操作我们都在fabfile.py就进行操作了,一般情况下fabfile.py放在项目根目录,当然你放在其他地方也没有什么问题。通过-f进行指定就行。

概要讲了,下面请参看我们的一个实战例子

一个例子

from fabric.api import (
    with_settings,
    hosts,
    cd,  # 远端
    lcd, # 本地切换目录
    run, # 执行
    env,
)

EST_ENV = '127.0.0.1'

TEST_USER = 'test'

env.forward_agent = True# 允许本地 SSH 代理连接远程终端时跳转

@hosts(TEST_ENV) # 指定远程操作的机器地址
@with_settings(user=TEST_USER) # 用来临时设定 env 变量,可以等同于 with settings
def deploy_test():
    # 发布测试环境
    local('git pull --rebase upsgream dev') # local执行本地命令拉取代码到本地,这个可以用CI自动发布,就不用拉取到本地。
    local('rsync -r . --exclude=tmp/ --exclude=backup/ sitin@yourip:/data/your_project') # 上传代码
    with cd('/data/your_project'): # 表示所有操作在这个目录下面
        run('docker-compose pull test')  # test镜像名
        backup_db() # 这里其实就是一个普通备份函数
        run('docker-compose stop test') # 执行远端命令同local相反
        run('docker-compose rm -f test')
        run('docker-compose run --rm test python manage.py migrate') # db同步
        run('docker-compose up -d test')

在终端执行命令

fab deploy_test # 就能进行发布了测试环境了

通常情况下测试,开发,服务器与线上操作不太一样,我们可以通过上面方式进行操作。除了上面的操作之后,如果我们测试线上完全一直或者多台服务器,可以通过指定不同角色来进行选择服务器的发布。

env.roledefs = { 
   'test': ['test@yourip'],  # 指定多台机器 
   'dev': ['dev@yourip'],   
   'prod': ['opt@yourip2'],
   }
   
def deploy(branch=master): 
    pass

fab -R test(上面定义的角色) deploy -f fabfile.py

这样指定某一个角色的服务器,某一个分支进行发布非常简单方便,对于经常使用的复杂命令操作我们还可以作为缩写命令来进行操作。

其他

类似我们要在docker里面进行docker-compose run --rm python manage.py migrate这种较长操作。

把操作写到fabfile.py里面的函数,就类似linux下面alias一样,fab migrate就完了简单方便。

除了上面,我们可以指定发布版本颜色进行区分发布成功出错与否,进行警示我们,非常方便快捷。

更多的大家可以参看fab -h更多参数含义,今天这个工具就介绍到这儿.

另外有不清楚docker-compose这个命令的参考我前面的文章。关于Python服务器运维,除了Fabric 还有SaltStack,Ansible更为复杂强大的管理工具,后期我们再进行分享,感谢你的关注。

640?wx_fmt=jpeg

一个坚持原创的Python公号

相关文章:

容器化部署实践之Django应用部署(二)

使用Docker容器化部署实践之Django应用部署(一)

Linux系列开坑记(一)-常用的3个命令

Docker容器化部署实践Docker Compose

640?wx_fmt=jpeg

扫码免费加入

分享到:
评论

相关推荐

    Python自动化部署工具Fabric的简单上手指南.pdf

    Python自动化部署工具Fabric是一个强大的用于远程服务器自动化执行任务的库,它基于SSH协议,使得开发者可以用Python语言编写脚本来管理和部署应用程序。Fabric简化了传统SSH命令行工具的操作,提高了效率和可读性。...

    Python库 | laf-fabric-4.5.25.tar.gz

    Fabric是一个基于Python的命令执行和部署工具,它利用SSH协议来连接到远程主机,执行命令。其核心组件包括Tasks(任务)和Commands(命令),开发者可以通过定义这些任务和命令,自定义自己的运维流程。例如,你可以...

    Python应用自动化部署工具Fabric原理及使用解析

    Fabirc是基于python实现的SSH命令行工具,非常适合应用的自动化部署,或者执行系统管理任务。 python2:pip3 install fabric python3:pip3 install fabric3 简单的例子: root@openstack:~# cat fabfile.py def ...

    PyPI 官网下载 | dploi-fabric-0.1.15.tar.gz

    这个压缩包文件包含了dploi-fabric库的0.1.15版本,是Python世界中用于自动化部署和管理服务器的强大工具。 dploi-fabric是一个基于Fabric的扩展库,旨在简化Python应用程序的部署过程。Fabric是一款轻量级的命令...

    Python-Fabric是一款django2Fabric3python3开源的代码部署工具

    Python Fabric 是一个强大的自动化部署和任务执行框架,尤其在Python开发环境中被广泛使用。它结合了Django2、Fabric3和Python3等技术,旨在简化服务器管理任务,如代码部署、系统配置、运行命令等。这个开源工具因...

    Python自动化运维::技术与最佳实践

    ### Python自动化运维:技术与最佳实践 #### 一、引言 随着信息技术的快速发展,运维工作也变得越来越复杂。为了提高运维效率并减少人为错误,自动化运维成为了IT行业的热门话题。Python作为一种简单易学且功能强大...

    python自动化运维

    总的来说,Python自动化运维是一个广泛涵盖多个领域的主题,包括系统管理、网络通信、配置管理、监控报警、自动化部署、故障排查等多个方面,通过学习和掌握这些知识,运维人员可以构建高效、可靠的自动化运维体系,...

    Python自动化部署工具Fabric的简单上手指南

    ### Python自动化部署工具Fabric的简单上手指南 #### 一、引言 随着软件开发规模的不断扩大和技术迭代的加速,自动化运维已经成为现代IT系统不可或缺的一部分。在这一领域中,Python以其简洁优雅的语法和强大的库...

    Python实现javaweb项目远端自动化更新部署-内含源码以及设计说明书(可以自己运行复现).zip

    通过以上知识点的学习和实践,开发者不仅可以掌握Python自动化部署的技巧,还能深入了解Java Web项目的工作原理,提升运维效率。对于想要提升自动化技能或进行持续集成/持续部署(CI/CD)的同学,这样的项目具有很高的...

    Python自动化运维和部署项目工具Fabric使用实例

    ### Fabric在Python自动化运维和部署中的应用 #### Fabric概述 Fabric是一个用Python编写的开源库,主要用于简化系统管理员的任务——实现远程服务器上的自动化部署、管理等操作。它通过SSH协议来与远程服务器交互...

    Python库 | fabric-mgmt-cli-1.0b10.tar.gz

    - **自动化部署**:可以用来自动化部署Web应用,包括代码的上传、数据库迁移、服务重启等步骤。 - **系统维护**:定期检查服务器状态,执行备份、日志清理等常规任务。 - **批量操作**:如更新所有服务器的软件包,...

    Python库 | invoke-1.4.1-py2-none-any.whl

    Invoke源于Fabric,一个用于自动化部署的Python库。然而,Invoke更专注于简化日常开发任务,如测试、构建和清理,而不是服务器管理。其核心理念是将每个命令封装为一个独立的函数,并通过命令行接口调用这些函数,...

    Python-python自动化运维技术与最佳实践书中示例及案例

    《Python自动化运维:技术与最佳实践》是一本深入探讨如何使用Python进行系统管理和自动化运维的权威书籍。书中涵盖了从基础的脚本编写到高级的自动化框架应用,旨在帮助IT专业人员提升工作效率,减少手动干预,确保...

    Python项目自动化多服务器部署的工具

    1. SSH(Secure Shell):这是远程服务器通信的基础,大多数自动化部署工具都需要通过SSH连接来执行命令。 2. 配置管理:了解如何编写配置文件,如Ansible的playbooks或Fabric的任务函数,是实现自动化部署的关键。 ...

    Python库 | fabric-cf-1.1b3.tar.gz

    - **与Docker结合**:Fabric-CF可以与Docker容器配合,实现容器的自动化部署和管理。 Fabric-CF作为一个强大的Python库,为开发者和运维人员提供了丰富的工具来应对日常的挑战。通过掌握它的使用,你能够提升工作...

    Python库 | fabric-provision-0.0.6.tar.gz

    1. **自动化部署**:允许开发者编写脚本,自动完成服务器的软件安装、配置文件更新等任务。 2. **环境一致性**:确保多台服务器的配置一致,这对于大规模集群的管理和维护至关重要。 3. **版本控制**:与版本控制...

    Python Linux系统管理与自动化运维

    2. 自动化部署:通过`Fabric`或`Ansible`实现远程服务器的自动化部署和配置。 3. 脚本化故障排查:Python脚本可以自动化执行诊断任务,如检查服务状态、网络连通性等。 4. 邮件通知:Python可以结合SMTP发送邮件,...

    iMaster NCE-Fabric V100R021C10 RESTful API开发指南(chm)

    10. **应用案例**:提供实际应用场景,展示如何结合iMaster NCE-Fabric API实现自动化部署、故障排查和网络变更。 这个CHM文件很可能是详细的开发者文档,包含了所有这些内容的深入解释和技术细节。对于希望集成...

    Python Linux系统管理与自动化运维_opt1

    首先,它介绍了Python在Linux环境中的基础应用,包括安装Python环境、常用Linux系统管理模块的使用,如paramiko用于远程控制,fabric用于自动化部署等。其次,书中深入探讨了Python在监控、日志分析、性能调优等系统...

Global site tag (gtag.js) - Google Analytics