2008-11-30 16 views
7

में ऑटोमाउंट ईबीएस वॉल्यूम क्या किसी को पता है कि अमेज़ॅन के Elastic Compute Cloud (ईसी 2) में विंडोज 2003 उदाहरण शुरू करते समय Elastic Block Storage (ईबीएस) वॉल्यूम को ऑटो-माउंट कैसे करें?अमेज़ॅन ईसी 2 विंडोज इंस्टेंस

उत्तर

4

सेटअप:

  • यकीन EBS मात्रा प्रारूपित और लेबल किया गया है (उदाहरण में मैं लेबल PDRIVE प्रयुक्त)।
  • सेटअप एक ड्राइव Ec2ConfigServiceSettings.exe
  • का उपयोग कर मानचित्रण उदाहरण
  • पर जावा स्थापित अपने प्रमाणपत्र की एक प्रति स्थापित EC2 एपीआई कमांड लाइन उपकरण
  • स्थापित करें और निजी कुंजी
  • कर्ल की एक प्रति को स्थापित करें। exe (ओपन सोर्स टूल)

आप इस स्क्रिप्ट को अपनी स्टार्टअप स्क्रिप्ट के रूप में सेट करने के लिए समूह नीति संपादक का उपयोग कर सकते हैं। अधिक जानकारी के लिए http://technet.microsoft.com/en-us/library/cc739591(WS.10).aspx देखें।

REM @echo off 
REM setlocal ENABLEDELAYEDEXPANSION 

C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 100 /so AttachEbsBoot /d "Starting attach-ebs-boot.cmd" 

REM local variables 
REM Make sure you include the directory with curl.exe and the EC2 command line tools in the path 
set path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;c:\Utils;C:\ebin\ec2\bin 
set JAVA_HOME=c:\java 
set EC2_HOME=c:\ebin\ec2 
set EC2_CERT=<your_cert> 
set EC2_PRIVATE_KEY=<your_private_key> 

REM Please note: you should use the Ec2 Config Serive Settings application to ensure 
REM that your EBS volume is mapped to a particular drive letter. 
REM 
REM edit as needed 
set EBS_DRIVE=P: 
set EBS_DEVICE=xvdp 

REM Test to see if the drive is already attached. If it is then we're done. 
if exist %EBS_DRIVE%\nul (goto done) 

REM get the EBS volume ID from the user data and the instance ID from the meta-data 
for /f "delims=" %%a in ('curl http://169.254.169.254/latest/user-data') do (set EBS_VOLUME=%%a) 
for /f "delims=" %%b in ('curl http://169.254.169.254/latest/meta-data/instance-id') do (set INSTANCE_ID=%%b) 

C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 102 /so AttachEbsBoot /d "Volume == %EBS_VOLUME%" 
C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 103 /so AttachEbsBoot /d "Instance == %INSTANCE_ID%" 

REM attach the volume 
REM 
REM Use a series of set command to build the command line 
SET COMMAND_LINE=%EBS_VOLUME% 
SET COMMAND_LINE=%COMMAND_LINE% -i 
SET COMMAND_LINE=%COMMAND_LINE% %INSTANCE_ID% 
SET COMMAND_LINE=%COMMAND_LINE% -d 
SET COMMAND_LINE=%COMMAND_LINE% %EBS_DEVICE% 

C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 104 /so AttachEbsBoot /d "calling ec2attvole %COMMAND_LINE%" 

call ec2attvol.cmd %COMMAND_LINE% 

:DONE 
C:\WINDOWS\system32\eventcreate /l SYSTEM /t information /id 101 /so AttachEbsBoot /d "Exiting attach-ebs-boot.cmd" 

REM Events logged in the System event log 
REM source === AttachEbsBoot 
REM 
REM Event 100 - Script start 
REM Event 101 - Script end 
REM Event 102 - Volume ID 
REM Event 103 - Instance ID 
REM Event 104 - Command line for ec2attvol 
3

मुझे निम्नलिखित रूबी कोड http://www.ioncannon.net/system-administration/199/automounting-amazon-ebs-volumes-on-ec2-instances/ कार्सन मैकडॉनल्ड्स की सौजन्य मिली। यह लिनक्स/यूनिक्स के लिए है, लेकिन हो सकता है कि आप विंडोज 2003 पर रूबी के लिए इसे फिर से घुमा सकते हैं या इसे किसी अन्य स्क्रिप्टिंग भाषा में करने के लिए मॉडल के रूप में कार्य कर सकते हैं।

ध्यान दें कि आप ईसीएस ईबीएस वॉल्यूम आईडी और डिवाइस नाम जैसे उपयोगकर्ता डेटा के रूप में अपनी छवि में चीजें पास कर सकते हैं (उदाहरण के लिए, निम्नलिखित उदाहरण में/dev/sdh या जो भी आपके मामले में विंडोज़ में होगा)। आप उदाहरण डेटा से उपयोगकर्ता डेटा को मेटा-डेटा के रूप में एक्सेस कर सकते हैं जैसा कि उदाहरण-आईडी प्राप्त करने के लिए लगभग नीचे किया गया है। अधिक विशेष रूप से, आप उपयोगकर्ता डेटा प्राप्त करने के लिए http://169.254.169.254/1.0/user-data तक पहुंचेंगे।

#!/usr/bin/ruby 

require 'rubygems' 
require 'right_aws' 
require 'net/http' 

url = 'http://169.254.169.254/2008-02-01/meta-data/instance-id' 
instance_id = Net::HTTP.get_response(URI.parse(url)).body 

AMAZON_PUBLIC_KEY='your public key' 
AMAZON_PRIVATE_KEY='your private key' 
EC2_LOG_VOL='the volume id' 

ec2 = RightAws::Ec2.new(AMAZON_PUBLIC_KEY, AMAZON_PRIVATE_KEY) 

vol = ec2.attach_volume(EC2_LOG_VOL, instance_id, '/dev/sdh') 
puts vol 

# It can take a few seconds for the volume to become ready. 
# This is just to make sure it is ready before mounting it. 
sleep 20 

system('mount /dev/sdh /mymountpoint') 
संबंधित मुद्दे