我们有一个云形成模板,它使用“ebs.config”中的配置将jenkins.war部署到AWS ElasticBeanstalk,并通过.ebextensions包含它。 EBS卷附加,环境成功启动。
当我们为war文件中的任何更改堆栈更新时,当它尝试部署新war文件时,我们在ElasticBeanstalk中收到错误,对于“ebs.config”中的“01_attach-volume”命令:
堆栈错误:
以下资源未能更新:[JenkinsEBSVol]。
无法更新AutoEnableIO以外的卷属性。将属性更改回以前的值并再次更新堆栈。
ElasticBeanstalk错误:
[实例:i-07ba0e47cc4ae929e]命令在实例上失败。返回码:255输出:调用AttachVolume操作时发生客户端错误(VolumeInUse):vol-050a4afd80895bb79已附加到实例。 .ebextensions / ebs.config中的命令01_attach-volume失败。有关更多详细信息,请使用控制台或EB CLI检查/var/log/eb-activity.log。
在更新堆栈时在ebs.config中执行命令时抛出错误,因为它正在尝试附加已附加的卷。那么我们如何解决这个问题呢?如何在附加了attach-volume命令时忽略它?任何帮助............
堆栈错误:
以下资源未能更新:[JenkinsEBSVol]。
无法更新AutoEnableIO以外的卷属性。将属性更改回以前的值并再次更新堆栈。
ElasticBeanstalk错误:
[实例:i-07ba0e47cc4ae929e]命令在实例上失败。返回码:255输出:调用AttachVolume操作时发生客户端错误(VolumeInUse):vol-050a4afd80895bb79已附加到实例。 .ebextensions / ebs.config中的命令01_attach-volume失败。有关更多详细信息,请使用控制台或EB CLI检查/var/log/eb-activity.log。
ebs.config:
{
"commands": {
"01_clear-if-unmounted": {
"command": "if ! mount | grep /usr/share/tomcat7/.jenkins > /dev/nul; then rm -rf /usr/share/tomcat7/.jenkins; fi"
},
"02_attach-volume": {
"command": "aws ec2 attach-volume --region us-east-1 --volume-id $EBSVolumeId --instance-id $(curl -s http://169.254.169.254/latest/meta-data/instance-id) --device /dev/sdh",
"env": {
"EBSVolumeId": {
"Fn::GetOptionSetting": {
"OptionName": "EBSVolumeId"
}
}
}
},
"03_wait": {
"command": "sleep 10"
},
"04_mkdir": {
"command" : "mkdir /usr/share/tomcat7/.jenkins"
},
"05_trymount": {
"command" : "mount /dev/sdh /usr/share/tomcat7/.jenkins",
"ignoreErrors": "true"
},
"06_format-if-not-already": {
"command": "if find /usr/share/tomcat7/.jenkins -maxdepth 0 -empty | read v; then mkfs -t ext3 /dev/sdh; fi"
}
}
}
答案 0 :(得分:0)
有两种方法可以解决错误
在“02_attach-volume”中添加“ignoreErrors”:“true”,类似于“05_trymount”
其他方法是使用aws cli检查卷是否可用或作为测试命令附加在“02_attach-volume”
希望这有帮助