自动化部署组件 Deploy4s

GPL
Python
跨平台
2018-03-20
Rocky

Deploy4s - A deploy tool for simple, standard, stable and stupid

About

参考AWS CodeDeploy的自动化部署服务,抽取其中标准化本地部署功能的一个组件。AWS CodeDeploy User Guide.

  • Deploy是一个自动化部署组件,能够让用户方便快速地将应用自动部署到目标机器上。通过部署流程的标准化和自动化,加快部署的速度,控制部署节奏,降低应用升级更新的复杂度,减少手工部署操作的错误和风险。最终使得用户能够在快速地发布新特性的同时保证部署的质量,避免部署过程中的服务中断。

  • 传统应用代码和部署脚本是分离的,基于很多不同的部署工具开发,如Chef,Puppet,Ansible,或者开发人员自己写的Shell,Python部署脚本。随着DevOps理念的兴起,消除Dev和Ops之间的鸿沟,系统的开发和运维由一个自治团队全权负责,所以将代码与部署放在一起就非常自然,统一Dev和Ops的目标和部署。另外,将应用代码与部署脚本一体化,也简化了代码和部署脚本的管理,避免代码版本与部署脚本版本需要对应的问题。其实,这种设计也简化了用户的使用过程,不需要额外再做部署脚本版本的管理了。

  • Deploy定义了一个基于事件部署流程接口,在接口定义中,定义多个部署文件拷贝源目标部署映射(files->source->destination),以及部署中各个步骤及步骤之间的执行顺序(ApplicationStop->BeforeInstall->Install->AfterInstall->ApplicationStart-> ValidateService),各个步骤要执行的脚本。

  • Deploy仅处理代码部署问题,并不处理应用配置管理,资源管理,环境管理以及之后的监控和恢复,伸缩等环节,用户想要实现系统的持续自动化部署,仍然需要自行集成开发,比如需要自行实现应用新版本的打包和上传,之后通过Deploy提供的相应API接口以及CLI将其集成到自己的开发流程,实现持续交付。

Requirements

  • Python

  • PyYAML

Install

下载最新的Release包,通过pip命令安装:

pip install deploy-0.0.1.zip

或者通过下载源码包或clone代码至本地,然后通过如下命令安装:

python setup.py install

Usage

deploycli --bundle=http://server/example.zip

使用--help查看更多使用帮助。
--bundle参数指定zip包的路径,可以是本地文件路径也可以是HTTP地址。

Release

Limit

与标准的AWS CodeDeploy相比,appspec.yml文件需要新增一个workdir参数,用于指定hooks中命令的执行Current Working Directory,其他参数配置可参考AWS CodeDeploy。

Example

一个示例的appspec.yml文件如下所示:

version: 0.0
os: linux
workdir: /app
files:
  - source: /
    destination: /app
hooks:
  ApplicationStart:
    - location: bin/start.sh
  ApplicationStop:
    - location: bin/stop.sh
  BeforeInstall:
    - location: bin/backup.sh
  AfterInstall:
    - location: chmod a+x bin -R

将该文件与待部署文件一起打成zip包(appspec.yml文件必须位于zip包顶层),将该zip包上传至HTTP server或待部署机器本地。 在服务运行的机器上执行如下命令,即可将部署zip包文件部署到机器上,并停止、启动服务(与hooks中配置相关):

deploycli --bundle=http://server/example.zip

 

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

Mac下如何添加User到group中

创建用户名为deploy,并加入deploy组中 1. 创建用户: sudo dscl . -create /Users/deploy 2. 创建组: sudo dscl . -create /groups/deploy 3. 列出所有组: sudo dscl . -list /groups Gr...

2015/01/06 17:21
129
0
在linux下配置javaWeb项目.sh部署脚本

在linux下配置javaWeb项目.sh部署脚本

2016/01/04 16:24
92
0
Ceph集群动态调整

动态新增/删除OSD、MON

2015/07/01 11:03
75
0
Makefile 实现工程的本地部署

某在开发子模块工程过程中经常需要将工程复制到测试目录进行整体集成编译,于是在makefile中添加部署伪目标。

2015/05/08 18:03
15
0
Kubernetes 二进制包安装

环境 角色 主机名 内网 IP 集群 IP 操作系统 服务 执行目录 部署机 k8s-master master120 10.0.4.120 - CentOS kube-apiserver kube-scheduler kube-controller-manager /opt/kubernetes/ et...

03/19 23:15
264
0
ceph部署过程

1.在每个节点执行useradd命令添加一个用户(如ceph),密码设为空 2.在mon.0节点执行ssh-keygen命令,然后执行ssh-copy-id将ssh public key复制到各个节点。修改 sshd config文件,开启远程无...

2015/04/21 16:30
288
0
Ceph安装配置

本例软件版本:CentOS 7.6,内核 5.2.9(内核至少4.15+),ceph 14.2.2 1.参考资料 http://docs.ceph.com/docs/master/ http://docs.ceph.org.cn/ https://blog.csdn.net/wylfengyujiancheng/arti...

04/05 19:29
311
0
jenkins 发布 -nodejs 例子

编译视图 图1:编译打包视图 图2:测试环境多分支分布 插件:git Parameter 构建shell: echo $JOB_NAME ${JOB_BASE_NAME} npm -v node -v #npm install npm run build rm ${JOB_BASE_NAME}....

2018/09/28 11:24
17
0
使用ceph-deploy部署ceph命令解析

1.在每个节点执行useradd命令添加一个用户(如ceph),密码设为空 2.在mon.0节点执行ssh-keygen命令,然后执行ssh-copy-id将ssh public key复制到各个节点。修改 sshd config文件,开启远程无...

2015/04/07 17:16
6.8K
0
自动部署工具capistrano学习笔记

capistrano新手, ruby新手所写的笔记。请批评指正。 本文的所有内容可运行在capistrano 2, 不能运行在capistrano3 。 capistrano版本为2.15.5。...

2014/02/23 00:02
2.7K
2

没有更多内容

加载失败,请刷新页面

返回顶部
顶部