Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save cm-watanabeseigo/5c1b0b1808dd91d25bb04d1626c33655 to your computer and use it in GitHub Desktop.
Save cm-watanabeseigo/5c1b0b1808dd91d25bb04d1626c33655 to your computer and use it in GitHub Desktop.
#!/bin/bash
# usage: $0
# $0 DELETE
# 環境変数の設定
Region="ap-northeast-1"
StackName="Amazon-EKS-EKSStack"
TemplateUrl=https://aws-quickstart.s3.amazonaws.com/quickstart-amazon-eks/templates/amazon-eks.template.yaml
VPCStackName="Amazon-EKS-VPCStack"
KeyPairName="id_rsa_aws-common"
NodeInstanceType="t3.small"
BastionInstanceType="t3.micro"
# 第一引数に DELETE と指定されたらスタックを削除する
if [ "$1" = "DELETE" ]; then
read -p "${StackName} を削除しますか? (y/N): " yn
case $yn in
y|Y)
echo "DELETING stack ${StackName}..."
aws cloudformation delete-stack \
--stack-name ${StackName} && echo "done."
exit
;;
*)
echo "abort."
exit
;;
esac
fi
# VPC情報をスタックから取得、環境変数に格納
printf "VPC情報取得 (${Amazon-EKS-VPCStack})..."
eval $(
aws cloudformation describe-stacks --stack-name ${VPCStackName} | \
jq -r '.Stacks[].Outputs[] |
"VPCID=" + select(.OutputKey == "VPCID").OutputValue,
"PublicSubnet1ID=" + select(.OutputKey == "PublicSubnet1ID").OutputValue,
"PublicSubnet2ID=" + select(.OutputKey == "PublicSubnet2ID").OutputValue,
"PublicSubnet3ID=" + select(.OutputKey == "PublicSubnet3ID").OutputValue,
"PrivateSubnet1ID=" + select(.OutputKey == "PrivateSubnet1AID").OutputValue,
"PrivateSubnet2ID=" + select(.OutputKey == "PrivateSubnet2AID").OutputValue,
"PrivateSubnet3ID=" + select(.OutputKey == "PrivateSubnet3AID").OutputValue
'
) && echo " done."
# アクセス許可IPアドレスを、使用中の端末のグローバルIPアドレスにする
printf "グローバルIPアドレス取得..."
RemoteAccessCIDR="$(curl -s https://checkip.amazonaws.com/)/32" && echo " done."
# CFn起動
echo "CFnスタック ${StackName} 作成中..."
aws cloudformation create-stack \
--stack-name ${StackName} \
--region ${Region} \
--parameters \
ParameterKey=KeyPairName,ParameterValue="${KeyPairName}" \
ParameterKey=NodeInstanceType,ParameterValue="${NodeInstanceType}" \
ParameterKey=BastionInstanceType,ParameterValue="${BastionInstanceType}" \
ParameterKey=VPCID,ParameterValue="${VPCID}" \
ParameterKey=PublicSubnet1ID,ParameterValue="${PublicSubnet1ID}" \
ParameterKey=PublicSubnet2ID,ParameterValue="${PublicSubnet2ID}" \
ParameterKey=PublicSubnet3ID,ParameterValue="${PublicSubnet3ID}" \
ParameterKey=PrivateSubnet1ID,ParameterValue="${PrivateSubnet1ID}" \
ParameterKey=PrivateSubnet2ID,ParameterValue="${PrivateSubnet2ID}" \
ParameterKey=PrivateSubnet3ID,ParameterValue="${PrivateSubnet3ID}" \
ParameterKey=RemoteAccessCIDR,ParameterValue="${RemoteAccessCIDR}" \
--capabilities CAPABILITY_IAM \
--template-url ${TemplateUrl} && echo "done."
printf "作成完了 (CREATE_COMPLETE) まで待機 (およそ20分+)..."
aws cloudformation wait stack-create-complete \
--stack-name ${StackName} && echo " done."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment