P5-4836 deploy api to production (new hostname)
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
##
|
||||
# Example:
|
||||
# make create-stack GITHUB_TOKEN=xxxxx ENVIRONMENT_NAME=staging STACK_NAME=api
|
||||
# make create-stack GITHUB_TOKEN=xxxxx ENVIRONMENT_NAME=production STACK_NAME=api
|
||||
#
|
||||
# # make update-stack ENVIRONMENT_NAME=staging STACK_NAME=api
|
||||
##
|
||||
|
||||
GITHUB_REPO := api2
|
||||
GITHUB_USER := Photowall
|
||||
# HOSTED_ZONE=photowall.com default in the template
|
||||
# Cert ARN for the hosted zone
|
||||
CERTIFICATE_ARN='arn:aws:acm:eu-west-1:954747537408:certificate/1278df32-006d-48a4-abd6-2bfccabb11fd'
|
||||
DB_SECURITY_GROUP_ID_PRODUCTION=sg-0b5bafc1e0a97e848
|
||||
DB_SECURITY_GROUP_ID_STAGING=sg-001b3667edf19e1ce
|
||||
|
||||
AWS_REGION=$(shell aws configure get region)
|
||||
AWS_ACCOUNT_ID=$(shell aws sts get-caller-identity --query Account --output text)
|
||||
|
||||
checkdef = $(if $(value $(1)),,$(error $(1) not set))
|
||||
|
||||
DOCKER_IMAGE=$(AWS_ACCOUNT_ID).dkr.ecr.$(AWS_REGION).amazonaws.com/$(STACK_NAME)-$(ENVIRONMENT_NAME)
|
||||
|
||||
ifeq ($(ENVIRONMENT_NAME),production)
|
||||
SUBDOMAIN=$(STACK_NAME)
|
||||
GITHUB_BRANCH=master
|
||||
DB_SECURITY_GROUP_ID=$(DB_SECURITY_GROUP_ID_PRODUCTION)
|
||||
CPU_SIZE=1024
|
||||
MEMORY_SIZE=4GB
|
||||
else
|
||||
SUBDOMAIN=$(STACK_NAME)-$(ENVIRONMENT_NAME)
|
||||
GITHUB_BRANCH=$(ENVIRONMENT_NAME)
|
||||
DB_SECURITY_GROUP_ID=$(DB_SECURITY_GROUP_ID_STAGING)
|
||||
CPU_SIZE=512
|
||||
MEMORY_SIZE=2GB
|
||||
endif
|
||||
|
||||
check-create-initial-ecr-image:
|
||||
@echo Checking for inital image $(DOCKER_IMAGE)
|
||||
@aws ecr list-images --repository-name $(STACK_NAME)-$(ENVIRONMENT_NAME) 2>/dev/null | grep imageTag | grep -q latest; \
|
||||
status=$$?; \
|
||||
if [ $$status != 0 ]; \
|
||||
then \
|
||||
echo ""; \
|
||||
echo "ECR Repo for initial image does not exist, creating"; \
|
||||
echo ""; \
|
||||
aws ecr create-repository --repository $(STACK_NAME)-$(ENVIRONMENT_NAME); \
|
||||
$$(aws ecr get-login --no-include-email --region eu-west-1); \
|
||||
docker pull nginx; \
|
||||
docker tag nginx $(AWS_ACCOUNT_ID).dkr.ecr.$(AWS_REGION).amazonaws.com/$(STACK_NAME)-$(ENVIRONMENT_NAME):latest; \
|
||||
docker push $(AWS_ACCOUNT_ID).dkr.ecr.$(AWS_REGION).amazonaws.com/$(STACK_NAME)-$(ENVIRONMENT_NAME):latest; \
|
||||
echo ""; \
|
||||
fi
|
||||
|
||||
check-create-variables-set:
|
||||
$(call checkdef,STACK_NAME)
|
||||
$(call checkdef,ENVIRONMENT_NAME)
|
||||
$(call checkdef,GITHUB_TOKEN)
|
||||
$(call checkdef,GITHUB_USER)
|
||||
$(call checkdef,GITHUB_REPO)
|
||||
|
||||
create-stack: check-create-variables-set check-create-initial-ecr-image
|
||||
aws cloudformation create-stack --stack-name $(STACK_NAME)-$(ENVIRONMENT_NAME) --template-body file://ecs-service.yaml \
|
||||
--capabilities CAPABILITY_NAMED_IAM \
|
||||
--parameters ParameterKey="EnvironmentName",ParameterValue="$(ENVIRONMENT_NAME)" \
|
||||
ParameterKey="Image",ParameterValue="$(DOCKER_IMAGE)" \
|
||||
ParameterKey="Subdomain",ParameterValue="$(SUBDOMAIN)" \
|
||||
ParameterKey="Certificate",ParameterValue="$(CERTIFICATE_ARN)" \
|
||||
ParameterKey="DatabaseSecurityGroup",ParameterValue="$(DB_SECURITY_GROUP_ID)" \
|
||||
ParameterKey="GitHubRepo",ParameterValue="$(GITHUB_REPO)" \
|
||||
ParameterKey="GitHubUser",ParameterValue="$(GITHUB_USER)" \
|
||||
ParameterKey="GitHubBranch",ParameterValue="$(GITHUB_BRANCH)" \
|
||||
ParameterKey="GitHubToken",ParameterValue="$(GITHUB_TOKEN)" \
|
||||
ParameterKey="CpuSize",ParameterValue="$(CPU_SIZE)" \
|
||||
ParameterKey="MemorySize",ParameterValue="$(MEMORY_SIZE)"
|
||||
|
||||
update-stack:
|
||||
$(call checkdef,STACK_NAME)
|
||||
$(call checkdef,ENVIRONMENT_NAME)
|
||||
aws cloudformation update-stack --stack-name $(STACK_NAME)-$(ENVIRONMENT_NAME) --template-body file://ecs-service.yaml \
|
||||
--capabilities CAPABILITY_NAMED_IAM \
|
||||
--parameters ParameterKey="EnvironmentName",UsePreviousValue=true \
|
||||
ParameterKey="Image",UsePreviousValue=true \
|
||||
ParameterKey="Subdomain",UsePreviousValue=true \
|
||||
ParameterKey="Certificate",UsePreviousValue=true \
|
||||
ParameterKey="DatabaseSecurityGroup",,UsePreviousValue=true \
|
||||
ParameterKey="GitHubRepo",UsePreviousValue=true \
|
||||
ParameterKey="GitHubUser",UsePreviousValue=true \
|
||||
ParameterKey="GitHubBranch",UsePreviousValue=true \
|
||||
ParameterKey="GitHubToken",UsePreviousValue=true \
|
||||
ParameterKey="CpuSize",ParameterValue="$(CPU_SIZE)" \
|
||||
ParameterKey="MemorySize",ParameterValue="$(MEMORY_SIZE)"
|
||||
Reference in New Issue
Block a user