我正在通过CodeDeploy
在/etc/logstash/
的目标实例中部署logstash配置。
这是三阶段式CodePipeline
的最后一步。
但是它失败并显示消息
部署失败,因为指定的文件已存在于/etc/logstash/pipelines.yml
如何指示CodeDeploy
覆盖文件?
答案 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