我正在尝试与CodeDeploy一起设置Auto Scaling组。一切正常,除了在创建新实例时CodeDeploy在用户数据脚本(在启动配置中定义)完成之前启动。
此用户数据脚本的默认值下载并安装代码部署代理,我通过安装几个Windows功能,IIS重写模块和msdeploy对其进行了扩展。
在我的appspec.yml中,我使用钩子AfterInstall来部署我的IIS网站,这显然在未安装msdeploy时失败。
我是以错误的方式解决这个问题还是有办法让CodeDeploy等待用户数据脚本完成?
答案 0 :(得分:7)
不幸的是,CodeDeploy没有比实例加载它的操作系统更多的知识。好处是CodeDeploy为主机代理提供1小时的时间来开始轮询使用自动部署的命令。最简单的方法是在安装所有必需的依赖项之后安装Host Agent。将创建自动部署,但在主机代理启动之后才能继续。
答案 1 :(得分:2)
这里有详细解释 - https://aws.amazon.com/blogs/devops/under-the-hood-aws-codedeploy-and-auto-scaling-integration/
启动脚本的顺序执行 – CodeDeploy 代理在启动后立即查找并执行部署。部署执行和启动脚本(例如用户数据、cfn-init 等)之间没有顺序。我们建议您将主机代理安装为启动脚本的一部分(也可能是最后一步),以便您可以确定在实例安装了不属于您的 CodeDeploy 部署的依赖项之前,不会执行部署。如果您更喜欢将代理烘焙到基础 AMI,我们建议您将代理服务保持在停止状态并使用启动脚本来启动代理服务。