-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathec2-template-config.sh
executable file
·51 lines (39 loc) · 2.31 KB
/
ec2-template-config.sh
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
#!/bin/bash
######################################################################
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. #
# SPDX-License-Identifier: Apache-2.0 #
######################################################################
source ./ec2.conf
echo ""
echo "Configuring EC2 Instance Template ..."
EC2_TEMPLATE_CONFIG=./ec2-template/ec2-template-config.json
EC2_TEMPLATE=./ec2-template/launch-template-${EC2_INSTANCE_NAME}.json
EC2_TEMPLATE_TMP=./ec2-template/launch-template-${EC2_INSTANCE_NAME}.json.tmp
cp -f $EC2_TEMPLATE_CONFIG $EC2_TEMPLATE
echo ""
echo "Updating template ${EC2_TEMPLATE} based on ec2.conf ..."
sed -i.tmp "s/\"LaunchTemplateName\": \"\"/\"LaunchTemplateName\": \"$EC2_INSTANCE_NAME\"/g" $EC2_TEMPLATE
sed -i.tmp "s/\"SubnetId\": \"\"/\"SubnetId\": \"$EC2_SUBNET_ID\"/g" $EC2_TEMPLATE
sed -i.tmp "s/\"ImageId\": \"\"/\"ImageId\": \"$EC2_IMAGE_ID\"/g" $EC2_TEMPLATE
sed -i.tmp "s/\"VolumeSize\": 0/\"VolumeSize\": $EC2_VOLUME_SIZE_GB/g" $EC2_TEMPLATE
cat $EC2_TEMPLATE | jq --arg EC2_INSTANCE_TYPE "$EC2_INSTANCE_TYPE" '.LaunchTemplateData.InstanceType = $EC2_INSTANCE_TYPE' > $EC2_TEMPLATE_TMP
cp -f $EC2_TEMPLATE_TMP $EC2_TEMPLATE
cat $EC2_TEMPLATE | jq --arg EC2_INSTANCE_PROFILE_NAME "$EC2_INSTANCE_PROFILE_NAME" '.LaunchTemplateData.IamInstanceProfile.Name = $EC2_INSTANCE_PROFILE_NAME' > $EC2_TEMPLATE_TMP
cp -f $EC2_TEMPLATE_TMP $EC2_TEMPLATE
sed -i.tmp "s/\"Key\": \"\"/\"Key\": \"Name\"/g" $EC2_TEMPLATE
sed -i.tmp "s/\"Value\": \"\"/\"Value\": \"$EC2_INSTANCE_NAME\"/g" $EC2_TEMPLATE
sed -i.tmp "s/\"KeyName\": \"\"/\"KeyName\": \"$EC2_KEY_NAME\"/g" $EC2_TEMPLATE
sed -i.tmp "s/\"AssociatePublicIpAddress\": true/\"AssociatePublicIpAddress\": $EC2_ASSIGN_PUBLIC_IP/g" $EC2_TEMPLATE
cat $EC2_TEMPLATE | jq --arg EC2_SG_ID "$EC2_SG_ID" '.LaunchTemplateData.NetworkInterfaces[].Groups[0] = $EC2_SG_ID' > $EC2_TEMPLATE_TMP
cp -f $EC2_TEMPLATE_TMP $EC2_TEMPLATE
rm -f $EC2_TEMPLATE_TMP
# Display config
echo ""
echo "Generated instance template:"
echo ""
cat $EC2_TEMPLATE | jq
echo ""
echo "Please review the template above, and if needed modify it in file $EC2_TEMPLATE"
echo "Once satisfied, you can run ./ec2-template-create.sh to create the template"
echo " and ./ec2-template-launch.sh <template_id> to launch an instance from this template."
echo ""