Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 使用“最大修订”值限制代码部署修订不起作用_Amazon Web Services_Amazon Ec2_Yaml_Aws Code Deploy - Fatal编程技术网

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部分添加此配置 添加到userdata节的命令

      "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部分添加此配置 添加到userdata节的命令

      "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期间触发了服务器重启。你认为我不会吗