调用AttachVolume操作时发生错误(VolumeInUse)

时间:2017-06-14 20:38:54

标签: amazon-web-services jenkins

我们有一个云形成模板,它使用“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"
                            }
            }

}

1 个答案:

答案 0 :(得分:0)

有两种方法可以解决错误

在“02_attach-volume”中添加“ignoreErrors”:“true”,类似于“05_trymount”

其他方法是使用aws cli检查卷是否可用或作为测试命令附加在“02_attach-volume”

希望这有帮助