-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaws_ami.py
More file actions
88 lines (61 loc) · 2.58 KB
/
aws_ami.py
File metadata and controls
88 lines (61 loc) · 2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import time
import boto.ec2
from argparse import ArgumentParser
parser = ArgumentParser(description='Process data to make new ec2 instance for the purpose of creating ami')
parser.add_argument('-k', '--access-key', dest='key_id', action='store',
default=None, type=str, required=True,
help='Get the aws access key value')
parser.add_argument('-w', '--secret-key', dest='secret_key', action='store',
default=None, type=str, required=True,
help='Get the aws secret key value')
parser.add_argument('-r', '--region', dest='region', action='store',
default='eu-west-1', type=str,
help='Set the region (default: eu-west-1)')
parser.add_argument('-a', '--ami-id', dest='ami_id', action='store',
default='ami-c37474b7', type=str,
help='Set the ami-id (default: ami-c37474b7)')
parser.add_argument('-n', '--key-name', dest='key_name', action='store',
default=None, type=str, required=True,
help='Set the <key_name>.pem key name (default: None)')
parser.add_argument('-t', '--type', dest='type', action='store',
default='t1.micro', type=str,
help='Set the instance type (default: t1.micro)')
parser.add_argument('-s', '--security', dest='security_groups', action='store',
default=[], nargs='+', type=str,
help='Set the security list (default: empty list)')
parser.add_argument('--file', '-f',
dest='file_name', default='test_userdata.sh',
help='The content of a message.')
args = parser.parse_args()
print
print 'AWS_ACCESS_KEY_ID: ', args.key_id
print 'AWS_SECRET_ACCESS_KEY: ', args.secret_key
print 'AWS_REGION: ', args.region
print 'AMI_ID: ', args.ami_id
print 'KEY_NAME: ', args.key_name
print 'INSTANCE_TYPE: ', args.type
print 'SECURITY_GROUPS: ', args.security_groups
print 'USER_DATA: ', args.file_name
print
user_data = open(args.file_name).read()
conn = boto.ec2.connect_to_region(args.region,
aws_access_key_id=args.key_id,
aws_secret_access_key=args.secret_key)
print 'Creating instance ...'
reservation = conn.run_instances(
args.ami_id,
key_name=args.key_name,
instance_type=args.type,
security_groups=args.security_groups,
user_data=user_data)
print 'Instance created ...'
instance = reservation.instances[0]
status = instance.update()
while status == 'pending':
print 'Waiting for instance to start ...'
time.sleep(10)
status = instance.update()
print 'Instance up and running ...'
instance.add_tag('Name', 'new-ami')
print 'Tag applied to instance ...'
print 'Connect to instance %s and check cloud-init.log' % instance.public_dns_name