commit
0c1756298c
@ -1,72 +0,0 @@ |
||||
import os |
||||
import argparse |
||||
import json |
||||
import time |
||||
import datetime |
||||
import base64 |
||||
|
||||
REGION_NAME = 'region_name' |
||||
REGION_KEY = 'region_key' |
||||
REGION_SECURITY_GROUP = 'region_security_group' |
||||
REGION_HUMAN_NAME = 'region_human_name' |
||||
|
||||
INSTANCE_TYPE = 'm3.medium' # 't2.micro' |
||||
AMI = 'ami-f2d3638a' # 'ami-a9d09ed1' |
||||
# UserData must be base64 encoded. |
||||
with open("userdata.sh", "rb") as userdata_file: |
||||
USER_DATA = base64.b64encode(userdata_file.read()) |
||||
IAM_INSTANCE_PROFILE = 'BenchMarkCodeDeployInstanceProfile' |
||||
|
||||
def read_configuration_file(filename): |
||||
config = {} |
||||
with open(filename,'r') as f: |
||||
for line in f: |
||||
vals = line.strip().split(',') |
||||
region_num = vals[0] |
||||
config[region_num] = {} |
||||
config[region_num][REGION_NAME] = vals[1] |
||||
config[region_num][REGION_KEY] = vals[2] |
||||
config[region_num][REGION_SECURITY_GROUP] = vals[3] |
||||
config[region_num][REGION_HUMAN_NAME] = vals[4] |
||||
return config |
||||
|
||||
def create_launch_specification(region_num): |
||||
input_cli = {} |
||||
input_cli['ImageId'] = AMI |
||||
# input_cli['Placement'] = { |
||||
# "AvailabilityZone": config[region_num][REGION_NAME] +"a" |
||||
# } |
||||
input_cli['SecurityGroups'] = [ "richard-spot-instance SSH" ] # [ config[region_num][REGION_SECURITY_GROUP] ] |
||||
input_cli['IamInstanceProfile'] = { |
||||
"Name": IAM_INSTANCE_PROFILE |
||||
} |
||||
input_cli['KeyName'] = "richard-spot-instance" # config[region_num][REGION_KEY] |
||||
input_cli['UserData'] = USER_DATA |
||||
input_cli['InstanceType'] = INSTANCE_TYPE |
||||
# folder = "launch_specs/" + "session-"+ current_session |
||||
folder = "launch_specs/latest" |
||||
if not os.path.exists(folder): |
||||
os.makedirs(folder) |
||||
launch_spec_file = os.path.join(folder,config[region_num][REGION_HUMAN_NAME]+".json") |
||||
with open(launch_spec_file,'w') as g: |
||||
json.dump(input_cli,g) |
||||
print("Launch spec: %s" % launch_spec_file) |
||||
return launch_spec_file |
||||
|
||||
def create_instances(region_list): |
||||
for i in range(len(region_list)): |
||||
region_num = region_list[i] |
||||
launch_spec_file = create_launch_specification(region_num) |
||||
|
||||
if __name__ == "__main__": |
||||
parser = argparse.ArgumentParser(description='This script helps you start instances across multiple regions') |
||||
parser.add_argument('--regions',type=str,dest='regions',default='3',help="a comma-separated-value list of all regions") |
||||
# configuration file contains the number/name/security-group etc. information of each region. |
||||
parser.add_argument('--config',type=str,dest='config',default='configuration.txt') |
||||
args = parser.parse_args() |
||||
config = read_configuration_file(args.config) |
||||
region_list = args.regions.split(',') |
||||
time_stamp = time.time() |
||||
current_session = datetime.datetime.fromtimestamp(time_stamp).strftime('%Y-%m-%d-%H-%M-%S') |
||||
print("current session is %s" % current_session) |
||||
create_instances(region_list) |
@ -0,0 +1,11 @@ |
||||
#!/bin/bash -x |
||||
REGION=$(curl 169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/[a-z]$//') |
||||
#yum update -y #This breaking codedeploy right now |
||||
yum install ruby wget -y |
||||
cd /home/ec2-user |
||||
touch yum-not-updated.txt |
||||
wget https://aws-codedeploy-$REGION.s3.amazonaws.com/latest/install |
||||
chmod +x ./install |
||||
./install auto |
||||
mkdir projects |
||||
mkdir projects/src |
Loading…
Reference in new issue