ec2-aws create-volume&附加卷脚本

时间:2016-03-13 12:42:59

标签: ruby bash amazon-web-services amazon-ec2

我正在尝试制作一个ruby脚本来附加AWS EC2中的EBS卷。我错过了一些细微的细节因为我在附加音量时出错了。请参阅以下错误:

#!/usr/bin/env ruby
require 'rubygems'

cmd = "ec2-create-volume  --size 10 --region us-east-1 --availability-zone us-east-1a --type gp2"
system(cmd, :out => ['/tmp/volid', 'w'])
volid = `awk '{print $2}' /tmp/volid`
puts "#{volid}"     ----->  PUTS THE VARIABLE AS EXPECTED

cmd = "ec2-attach-volume #{volid} --instance i-2e69a1b5 --device /dev/xvdg"
system(cmd)  ---->  It shows ERROR -i instance/--instance is missing, somehow is putting the variable incorectly, it's like is not reading the command after the volid variable.

如果我声明voldid ='vol-123'脚本正在运行,但是如果我把它放在文件中就不起作用了,即使输出它显示vol-123。

1 个答案:

答案 0 :(得分:1)

猜测文件末尾有一个行尾字符,您正在读取卷ID。 strip函数删除了前导和尾随空格,这应该清除它。

似乎也更容易做到

volid = File.read("/tmp/volid").strip

而不是炮轰awk。您还可以通过使用允许捕获命令输出的各种方法(反引号,popen,open3等)来完全避免使用临时文件。 aws红宝石sdk也很容易使用,虽然这显然是一个不同的鱼。