10 個のインスタンスを開始し、それらのインスタンス ID とプライベート IP アドレスを取得したいと考えています。
これは AWS CLI を使用して実行できることを知っています。そのようなスクリプトが既に作成されているかどうか疑問に思っているので、車輪を再発明する必要はありません。
ありがとう
10 個のインスタンスを開始し、それらのインスタンス ID とプライベート IP アドレスを取得したいと考えています。
これは AWS CLI を使用して実行できることを知っています。そのようなスクリプトが既に作成されているかどうか疑問に思っているので、車輪を再発明する必要はありません。
ありがとう
将来誰かが私の質問に出くわす可能性が低いので、(ある程度)最終的な解決策を提供したいと思いました。
Python と提案された Boto パッケージを使用して、次の Python スクリプトを作成しました。
よくコメントされていますが、ご不明な点がございましたらお気軽にお問い合わせください。
import boto
import time
import sys
IMAGE = 'ami-xxxxxxxx'
KEY_NAME = 'xxxxx'
INSTANCE_TYPE = 't1.micro'
SECURITY_GROUPS = ['xxxxxx'] # If multiple, separate by commas
COUNT = 2 #number of servers to start
private_dns = [] # will be populated with private dns of each instance
print 'Connecting to AWS'
conn = boto.connect_ec2()
print 'Starting instances'
#start instance
reservation = conn.run_instances(IMAGE, instance_type=INSTANCE_TYPE, key_name=KEY_NAME, security_groups=SECURITY_GROUPS, min_count=COUNT, max_count=COUNT)#, dry_run=True)
#print reservation #debug
print 'Waiting for instances to start'
# ONLY CHECKS IF RUNNING, MAY NOT BE SSH READY
for instance in reservation.instances: #doing this for every instance we started
while not instance.update() == 'running': #while it's not running (probably 'pending')
print '.', # trailing comma is intentional to print on same line
sys.stdout.flush() # make the thing print immediately instead of buffering
time.sleep(2) # Let the instance start up
print 'Done\n'
for instance in reservation.instances:
instance.add_tag("Name","Hadoop Ecosystem") # tag the instance
private_dns.append(instance.private_dns_name) # adding ip to array
print instance, 'is ready at', instance.private_dns_name # print to console
print private_dns
このような自動化には、python と boto パッケージを使用することをお勧めします。Python は bash よりも明確です。次のページを開始点として使用できます: http://boto.readthedocs.org/en/latest/ec2_tut.html