CodeDeploy配置以覆盖文件

时间:2019-02-08 07:20:56

标签: amazon-web-services aws-code-deploy aws-codepipeline

我正在通过CodeDeploy/etc/logstash/的目标实例中部署logstash配置。

这是三阶段式CodePipeline的最后一步。

但是它失败并显示消息

  

部署失败,因为指定的文件已存在于/etc/logstash/pipelines.yml

如何指示CodeDeploy覆盖文件?

4 个答案:

答案 0 :(得分:0)

GitHub上存在一个添加覆盖选项的问题,并且已经存在了一段时间。我通过在BeforeInstallation挂钩中添加自定义脚本来解决此问题,该脚本将在复制新部署之前擦除所有现有文件。

这是我的appspec.yml文件的样子

version: 0.0
os: linux
files:
  - source: /
    destination: /path/to/destination
hooks:
  BeforeInstall:
    - location: DeploymentScripts/CleanupScript.sh
  AfterInstall:
    - location: DeploymentScripts/InstallScript.sh
      timeout: 600
  ApplicationStart:
    - location: DeploymentScripts/RestartScript.sh
      timeout: 3600

答案 1 :(得分:0)

目前,据我所知,您可以覆盖文件的唯一方法是创建新部署时选择覆盖或保留as seen here。在其他任何地方都看不到这些设置。而且,如果我没记错的话,这是唯一的方法,因为CLI不支持它。

答案 2 :(得分:-1)

您可以在以下的appspec.yml中传递此属性

个文件: 覆盖:true

答案 3 :(得分:-2)

使用CodeDeploy部署代码时,它将在服务器上查找文件,其中包含先前为application / deployment-group部署的文件的信息,如果找到了现有文件,则它将被新的修订文件覆盖。如果先前的代码是通过手动或其他任何方式部署的,则代码部署代理无法覆盖。您需要在安装之前删除其中的代码。

否则,您可以尝试在appsec文件中使用覆盖标志。

files:
- source: code
destination: /var/www/
overwrite: true