Skip to content

Dgadavin/devopsology-tf-workshop

Repository files navigation

Terraform

Download terraform

unzip terraform.zip
cp terraform /usr/local/bin/terraform
chmod u+x /usr/local/bin/terraform
terraform version

AWS authentication

Please use your crenetials.csv file that you download when create IAM user or generate new one. Create file ~/aws_creds.txt with such content:

export AWS_ACCESS_KEY_ID=""
export AWS_SECRET_ACCESS_KEY=""

Before start terraform commands please do:

source ~/aws_creds.txt

More info how to authenticate in AWS you can find here

Install awscli

easy_install pip
pip install awscli
aws configure

Configure and run first project

Before start we need to set ENV variables

cd simple-ec2-creation
export TF_VAR_vpc_id=$(aws ec2 describe-vpcs --filters "Name=isDefault, Values=true" --query 'Vpcs[*].{id:VpcId}' --output text --region us-east-1)
export TF_VAR_subnet_id=$(aws ec2 describe-subnets --query 'Subnets[0].{id:SubnetId}' --output text --region us-east-1)
export TF_VAR_env=dev
terraform init
terraform plan
terraform apply

Create S3 bucket for storing states

aws s3api create-bucket --bucket terraform-itea-workshop-<YOUR_NAME> --region us-east-1

Config remote state

BUCKET_NAME="terraform-itea-workshop-<YOUR_NAME>"
grep -Rl '@@bucket@@' . | xargs sed -i.bac -e 's/@@bucket@@/${BUCKET_NAME}/g' # For MAC
grep -Rl '@@bucket@@' . | xargs sed -i's/@@bucket@@/${BUCKET_NAME}/g' # On Linux

Init terraform with remote state

terraform init -backend-config=config/${TF_VAR_env}-state.conf
terraform plan
terraform apply

Base AWS setup with VPCs

cd base_aws_setup
export TF_VAR_env=prod
grep -Rl '@@bucket@@' . | xargs sed -i.bac -e 's/@@bucket@@/${BUCKET_NAME}/g' # For MAC
grep -Rl '@@bucket@@' . | xargs sed -i's/@@bucket@@/${BUCKET_NAME}/g' # On Linux
terraform init -backend-config=config/${TF_VAR_env}-state.conf
terraform plan -var-file=environment/${TF_VAR_env}.tfvars
terraform apply -var-file=environment/${TF_VAR_env}.tfvars

ECS cluster creation

cd ecs-cluster-setup
export TF_VAR_env=dev
grep -Rl '@@bucket@@' . | xargs sed -i.bac -e 's/@@bucket@@/${BUCKET_NAME}/g' # For MAC
grep -Rl '@@bucket@@' . | xargs sed -i's/@@bucket@@/${BUCKET_NAME}/g' # On Linux
terraform init -backend-config=config/${TF_VAR_env}-state.conf
terraform plan -var-file=environment/${TF_VAR_env}.tfvars
terraform apply -var-file=environment/${TF_VAR_env}.tfvars

Deploy nginx to ECS

cd ecs-service
export TF_VAR_env=dev
grep -Rl '@@bucket@@' . | xargs sed -i.bac -e 's/@@bucket@@/${BUCKET_NAME}/g' # For MAC
grep -Rl '@@bucket@@' . | xargs sed -i's/@@bucket@@/${BUCKET_NAME}/g' # On Linux
terraform init -backend-config=config/${TF_VAR_env}-state.conf
terraform plan -var-file=environment/${TF_VAR_env}.tfvars
terraform apply -var-file=environment/${TF_VAR_env}.tfvars

Cleanup

# Delete ecs-service
export TF_VAR_env=dev
cd ecs-service
terraform destroy -var-file=environment/${TF_VAR_env}.tfvars
rm -rf .terraform
# Delete ecs-cluster
export TF_VAR_env=dev
cd ecs-cluster-setup
terraform destroy -var-file=environment/${TF_VAR_env}.tfvars
rm -rf .terraform
# Delete base infra
export TF_VAR_env=prod
cd base_aws_setup
terraform destroy -var-file=environment/${TF_VAR_env}.tfvars
rm -rf .terraform

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published