appspec.yml文件解析
来源:互联网 发布:js计算总金额 编辑:程序博客网 时间:2024/06/11 14:11
appspec.yml是YAML格式、用于定于CodeDeploy服务在整个阶段所做的操作和文件拷贝路径和权限等。首先,这个文档名称必须是appspec.yml
,而且文档中的空格个数也有严格的要求,文章最后面会讲到。
appspec.yml文档结构:
version: 0.0os: operating-system-namefiles: source-destination-files-mappingspermissions: permissions-specificationshooks: deployment-lifecycle-event-mappings
version这里,类似于aws api的版本号,目前只能写0.0
os这里可接受的选项是linux和windows,全小写
files段,定于文件映射关系,例如下面这段
files: - source: Config/config.txt destination: /webapps/Config - source: source destination: /webapps/myApp
source文件路径是是相对于本版包的相对路径,如果是/
,表示本版包里的全部文件和目录
destination这里是被部署服务器的完整路径(绝对路径)
permission段:用于定义和描述被拷贝到目标服务器上的文件拷贝后的权限
例如下面这个例子
permissions: - object: /home/webapp/tomcat/webapps/cms-front pattern: "**" except: /home/webapp/tomcat/webapps/cms-front/version.ini owner: webapp group: webapp mode: 644 acls: - u:read-only:r - u:wangfei:rw context: user: unconfined_u type: httpd_sys_content_t range: s0 type: - file
object是必选项,也就是你的版本包部署路径
pattern是可选项,用于匹配想要赋权的文件,"**"
和不填,表示匹配所有文件(可选项)
except就是排除在pattern中被匹配的文件(可选项)
owner和group好理解,改变文件属主(可选项)
mode这里可接受类似644和755这样的权限,或者4755这样的带粘滞位的赋权(可选项)
acls中设置Access Control List,这里我们可以给read-only用户只读权限(可选项)
context是给SELinux用的,不熟悉(可选项)
type可选项是file和directory,用于表述被赋权对象类型,只是文件,还是只是目录,不填表示版本包里的所有文件和目录
hooks区段就是定义各个阶段执行的操作
先介绍下CodeDeploy整个部署过程
1. Start,不可自定义操作
2. ApplicationStop,可定义停服过程
3. DownloadBundle,下载版本包,不可自定义该阶段操作,linux系统下,版本包会被下载到/opt/codedeploy-agent/deployment-root/deployment-group-id/deployment-id/deployment-archive
,windows系统会被下载到C:\ProgramData\Amazon\CodeDeploy\deployment-group-id\deployment-id\deployment-archive
4. BeforeInstall,定义版本包文件复制到目标目录之前的操纵,这里可定义备份操作
5. Install,该过程不可被hook,只能通过appspec.yml中的路径和权限等来定义,例如file区段,定义文件拷贝路径
6. AfterInstall,文件复制完之后的操作,可以吧permisson中的定义在此处用脚本来实现
7. ApplicationStart,可被hook来进行起服前的自定义行为
8. ValidateService,部署被验证完成之后可被hook,可用于定义完成之后清理现场。
9. End,结束,不可被hook
hooks: deployment-lifecycle-event-name - location: script-location timeout: timeout-in-seconds runas: user-name
hook里面的deployment-lifecycle-event-name
,可选项为: ApplicationStop,BeforeInstall,AfterInstall,ApplicationStart,ValidateService
。
location写该阶段需要执行的脚本文成和路径,相对版本包的相对路径,例如scripts/full_backup.sh
,location可以写多个,每行一个。
timeout时间为超时的秒数,超过指定时间脚本还没完成就算部署失败,默认是1800秒。注意hook阶段的总超时时间是1小时,也就是说在该阶段所有脚本的执行时间必须在1小时内完成,否则会被认为是失败了。
runas,可选项,定义脚本执行的身份
关于文件中的空格必须是指定的个数,例如下面例子中,[4]表示4个空格,不能多也不能少
version:[1]version-numberos:[1]operating-system-namefiles:[2]-[1]source:[1]source-files-location[4]destination:[1]destination-files-locationpermissions:[2]-[1]object:[1]object-specification[4]pattern:[1]pattern-specification[4]except:[1]exception-specification[4]owner:[1]owner-account-name[4]group:[1]group-name[4]mode:[1]mode-specification[4]acls: [6]-[1]acls-specification [4]context:[6]user:[1]user-specification[6]type:[1]type-specification[6]range:[1]range-specification[4]type:[6]-[1]object-typehooks:[2]deployment-lifecycle-event-name:[4]-[1]location:[1]script-location[6]timeout:[1]timeout-in-seconds[6]runas:[1]user-name
解析出来就是这样
version: 0.0os: linuxfiles: - source: / destination: /var/www/html/WordPresshooks: BeforeInstall: - location: scripts/install_dependencies.sh timeout: 300 runas: root AfterInstall: - location: scripts/change_permissions.sh timeout: 300 runas: root ApplicationStart: - location: scripts/start_server.sh timeout: 300 runas: root ApplicationStop: - location: scripts/stop_server.sh timeout: 300 runas: root
- appspec.yml文件解析
- java解析yml文件
- .yml是什么文件
- opencv读取yml文件
- python 写 yml文件
- python 写yml文件
- .yml是什么文件
- yaml文件 .yml
- .yml文件语法
- @Value 读取yml 文件
- opencv读写xml 、yml文件
- springboot注解读取yml文件
- yml
- yml
- OpenCV FileStorage类读写XML/YML文件
- 修改Ruby的config.yml文件
- OpenCV FileStorage类读写XML/YML文件
- OpenCV FileStorage类读写XML/YML文件
- 个人学习c++的心得与体验!
- sql中存储过程和视图、函数的区别
- Eclipse 项目红色叹号
- Struts2基础学习之数据类型转换
- linux下TCPDUMP抓包工具
- appspec.yml文件解析
- 【转载】Cookie/Session机制详解
- 斐波那契数列
- Device Tree(二):基本概念
- Android学习之路
- SQL语句-实现对数据中两张表的访问
- linux下测试网络连接
- ie版本检测
- linux下查看硬件配置