Amazon web services 使用“最大修订”值限制代码部署修订不起作用
我试图通过编辑Amazon web services 使用“最大修订”值限制代码部署修订不起作用,amazon-web-services,amazon-ec2,yaml,aws-code-deploy,Amazon Web Services,Amazon Ec2,Yaml,Aws Code Deploy,我试图通过编辑codedeployagent.yml文件的max_revisions值来限制EC2实例上保留的成功代码部署修订的数量。我目前已将该值设置为:max\u revisions:2 我相信我遇到的问题是由于我设置文件值的方法。我试图通过将其与代码部署包一起部署来设置该值。为此,我在以下位置本地创建了一个自定义codedeployagent.yml文件: etc/codedeployagent/conf/codedeployagent.yml 在我的appspec.yml文件中,我通过以
codedeployagent.yml
文件的max_revisions
值来限制EC2实例上保留的成功代码部署修订的数量。我目前已将该值设置为:max\u revisions:2
我相信我遇到的问题是由于我设置文件值的方法。我试图通过将其与代码部署包一起部署来设置该值。为此,我在以下位置本地创建了一个自定义codedeployagent.yml
文件:
etc/codedeployagent/conf/codedeployagent.yml
在我的appspec.yml
文件中,我通过以下行指定此文件的安装位置:
- source: etc/codedeploy-agent/conf/codedeployagent.yml
destination: /etc/codedeploy-agent/conf
我发现,由于脚本已经就位,因此在尝试部署时会出现此错误。为了解决这个问题,我添加了一个脚本,该脚本在安装前钩住了我的appspec.yml
,它将在安装软件包之前删除该脚本:
#!/bin/bash
sudo rm /etc/codedeploy-agent/conf/codedeployagent.yml
好的,在这之后,我将ssh
'd放入服务器,果然,:max\u revisions:2
值按预期设置。不幸的是,在实践中,我看到在ec2
实例上保留的修订远远不止两个
因此,回到我问题的开头……显然,这种变通方法不是更新
codedeployagent.yml
文件的最佳方法。我应该补充一点,我正在部署到一个自动伸缩组,因此这需要一个能够存在于部署脚本或云形成模板中的解决方案,而不仅仅是登录和硬编码值。有了这些信息,我还缺什么?我怎样才能正确地限制修订?谢谢。您可以尝试以下方法之一
max_revisions
修改为2
的实例的AMI为例,使用此AMI更新ASG的启动配置,以便横向扩展实例也将具有此配置 "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash -xe\n",
"# Delete last line and add new line \n",
"sed '$ d' /etc/codedeploy-agent/conf/codedeployagent.yml > /etc/codedeploy-agent/conf/temp.yml\n",
"echo ':max_revisions: 2' >> /etc/codedeploy-agent/conf/temp.yml\n",
"rm -f /etc/codedeploy-agent/conf/codedeployagent.yml\n",
"mv /etc/codedeploy-agent/conf/temp.yml /etc/codedeploy-agent/conf/codedeployagent.yml\n",
"service codedeploy-agent restart\n"
]]}}
根据,max_修订版适用于每个部署组的应用程序。因此,它在
/opt/codedeployagent/deployment root/
下只保留了2个修订。如果ASG与多个应用程序关联,codedeploy将在其部署组id目录中存储每个应用程序的2个修订版。您可以尝试以下方法之一
max_revisions
修改为2
的实例的AMI为例,使用此AMI更新ASG的启动配置,以便横向扩展实例也将具有此配置 "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash -xe\n",
"# Delete last line and add new line \n",
"sed '$ d' /etc/codedeploy-agent/conf/codedeployagent.yml > /etc/codedeploy-agent/conf/temp.yml\n",
"echo ':max_revisions: 2' >> /etc/codedeploy-agent/conf/temp.yml\n",
"rm -f /etc/codedeploy-agent/conf/codedeployagent.yml\n",
"mv /etc/codedeploy-agent/conf/temp.yml /etc/codedeploy-agent/conf/codedeployagent.yml\n",
"service codedeploy-agent restart\n"
]]}}
根据,max_修订版适用于每个部署组的应用程序。因此,它在
/opt/codedeployagent/deployment root/
下只保留了2个修订。如果ASG与多个应用程序关联,codedeploy将在其deployment\u group\u id目录中存储每个应用程序的2个修订版。更新配置文件后是否重新启动代理程序?重新启动代理之前,任何新配置都无法工作。更新配置文件后是否重新启动代理?重新启动代理之前,任何新配置都无法工作。谢谢您的回复。由于几个原因,我宁愿不接受AMI。在这种情况下,第二种选择似乎是更好的解决方案。您能否提供一个示例脚本,说明我如何更新Can信息模板用户数据部分的max\u修订版
?完成!已在回答中编辑。我已尝试对我的云形成模板进行此更新,我收到以下错误收到1个成功信号中的0个。无法满足100%分钟成功实例百分比要求
。我已尝试将MinSuccessfulInstancesPercent
调整为零,但出于某些奇怪的原因,这仍然是错误消息。正如@binbinlu所建议的,在配置更改后添加了codedeploy代理重新启动。您可以尝试进行此更改吗?我已尝试在ApplicationStart
hook上重新启动sudo service codedeploy agent
,但仍看到修订超过了max revisions
值。更多细节见@binlu的回答。我是否遗漏了max\u revisions
参数的要点?它不应该删除任何超过该值的记录吗?谢谢你的回复。由于几个原因,我宁愿不接受AMI。在这种情况下,第二种选择似乎是更好的解决方案。您能否提供一个示例脚本,说明我如何更新Can信息模板用户数据部分的max\u修订版
?完成!已在回答中编辑。我已尝试对我的云形成模板进行此更新,我收到以下错误收到1个成功信号中的0个。无法满足100%分钟成功实例百分比要求
。我已尝试将MinSuccessfulInstancesPercent
调整为零,但出于某些奇怪的原因,这仍然是错误消息。正如@binbinlu所建议的,在配置更改后添加了codedeploy代理重新启动。您可以尝试进行此更改吗?我已尝试在ApplicationStart
hook上重新启动sudo service codedeploy agent
,但仍看到修订超过了max revisions
值。更多细节见@binlu的回答。我是否遗漏了max\u revisions
参数的要点?它不应该删除超出该值的任何记录吗?是的,这对我来说是有意义的,并且在运行sudo服务httpd restart的ApplicationStart
hook for code deploy期间触发了服务器重启。你认为我不会吗