Fabric业务部署示例

#  coding:utf-8

from fabric.api import *
import getpass


env.user = "用户名"
env.hosts = ["服务器IP或域名1", "服务器IP或域名2"]
env.port = "22"


# 只需输入一次密码
@runs_once
def get_passwd():
    return getpass.getpass('请输入服务器登录密码: ')


# 打包
@task
def pack():
    local("rm -f ../project.tar.gz")
    local("tar czvf ../project.tar.gz  --exclude=*.pyc ../project")


# 部署
@task
def deploy():
    env.password = get_passwd()
    with settings(warn_only=True):
        # 前面是源,后面是目标
        put("/home/lee/Code/project/project.tar.gz", "/home/lee/project.tar.gz")
        run("sudo /usr/local/bin/supervisorctl stop all")
        run("/bin/rm -rf /home/lee/project")
        with cd("/home/lee"):
            run("/bin/tar zxvf project.tar.gz")
        run("/bin/rm -f /home/lee/project.tar.gz")
        run("sudo /usr/local/bin/supervisorctl start all")
        run("sudo /usr/local/bin/supervisorctl status")

# 先打包后部署
@task
def go():
    env.password = get_passwd()
    pack()
    deploy()
  • 只打包
fab pack
  • 只部署
fab deploy
  • 先打包后部署
fab go
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载本文需注明出处:微信公众号EAWorld,违者必究。 本文目录: 一、企业应用的部署发展 二、普元容器云与De...
    72a1f772fe47阅读 919评论 0 3
  • 前端集成解决方案要求: 模块化开发。最好能像写nodejs一样写js,很舒服。css最好也能来个模块化管理! 性能...
    Www刘阅读 3,068评论 1 20
  • Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之...
    butterfly100阅读 748评论 0 2
  • 做法: 翅中:8个 可乐:一听 蒜泥,姜片,香叶,桂皮,老抽,生抽料酒,生抽 1. 翅中划刀,加料酒,生抽,腌制半...
    水底的黑色瓶盖阅读 375评论 3 3
  • git地址:github.com/Roy1993sun/TODO 百度云地址:pan.baidu.com/s/1h...
    阿伟刚来也阅读 124评论 0 0