ec2_launch plugin porting to boto3 +

(print_public_ip not working yet)
This commit is contained in:
Marcin Kulisz 2016-11-12 21:57:42 +00:00
parent 07c66e9030
commit ed33a5f067

View file

@ -23,19 +23,21 @@ class LaunchEC2Instance(Task):
@classmethod
def run(cls, info):
conn = info._ec2['connection']
r = conn.run_instances(info._ec2['image'],
security_group_ids=info.manifest.plugins['ec2_launch'].get('security_group_ids'),
key_name=info.manifest.plugins['ec2_launch'].get('ssh_key'),
instance_type=info.manifest.plugins['ec2_launch'].get('instance_type',
r = conn.run_instances(ImageId=info._ec2['image']['ImageId'],
MinCount=1,
MaxCount=1,
SecurityGroupIds=info.manifest.plugins['ec2_launch'].get('security_group_ids'),
KeyName=info.manifest.plugins['ec2_launch'].get('ssh_key'),
InstanceType=info.manifest.plugins['ec2_launch'].get('instance_type',
'm3.medium'))
info._ec2['instance'] = r.instances[0]
info._ec2['instance'] = r['Instances'][0]
if 'tags' in info.manifest.plugins['ec2_launch']:
def apply_format(v):
return v.format(**info.manifest_vars)
tags = info.manifest.plugins['ec2_launch']['tags']
r = {k: apply_format(v) for k, v in tags.items()}
conn.create_tags([info._ec2['instance'].id], r)
raw_tags = info.manifest.plugins['ec2_launch']['tags']
formatted_tags = {k: v.format(**info.manifest_vars) for k, v in raw_tags.items()}
tags = [{'Key': k, 'Value': v} for k, v in formatted_tags.items()]
conn.create_tags(Resources=[info._ec2['instance']['InstanceId']],
Tags=tags)
class PrintPublicIPAddress(Task):
@ -54,11 +56,11 @@ class PrintPublicIPAddress(Task):
def instance_has_ip():
ec2['instance'].update()
return ec2['instance'].ip_address
return ec2['instance']['PublicIpAddress']
if waituntil(instance_has_ip, timeout=120, interval=5):
logger.info('******* EC2 IP ADDRESS: %s *******' % ec2['instance'].ip_address)
f.write(ec2['instance'].ip_address)
logger.info('******* EC2 IP ADDRESS: %s *******' % ec2['instance']['PublicIpAddress'])
f.write(ec2['instance']['PublicIpAddress'])
else:
logger.error('Could not get IP address for the instance')
f.write('')