2016-03-13 78 views
0

我試圖製作一個ruby腳本來附加AWS EC2中的EBS卷。我錯過了一些小細節,因爲我在附加音量時遇到錯誤。請參閱下面的錯誤:ec2-aws創建卷和附加捲腳本

#!/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 =「卷-123」的腳本工作,但如果我把它從一個文件,如果其輸出顯示體積-123甚至沒有工作。

回答

1

猜測在你正在讀取卷ID的文件末尾有行尾字符。 strip函數刪除應該清除它的前導和尾隨空白。

它也似乎將是更容易做到

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

而非炮擊,以AWK。您還可以通過使用一種允許您捕獲命令輸出的各種方法(反引號,popen,open3等)來完全避免使用臨時文件。 aws ruby​​ sdk也非常易於使用,雖然這顯然是一個不同的水壺。

+0

這很好,它的工作。謝謝你的提示。 –