Skip to content

svermaji/terraform-aws

Repository files navigation

Terraform

Will create multiple set of scripts for clarity. Version details:

  • OS: Win10 Home
  • Terraform: v0.12.18
  • Packer: 1.5.1
  • AWS: aws-cli/1.16.303 Python/3.6.0 Windows/10 botocore/1.13.39

1-beginner

For details check my blog: http://sv-technical.blogspot.com/2019/12/terraform.html
This folder contains terraform sample scripts that

  • creates roles, users (not using for security reasons)
  • creates instance using ssh
  • creates groups
  • ami
  • ec2 etc

Commands:

  • terraform plan -no-color -refresh=true -out=infra.tfplan
  • terraform apply -refresh=true -auto-approve "infra.tfplan"
  • terraform destroy -auto-approve

2-modules (and packer scripts)

This folder contains terraform sample scripts that

  • terraform files arranged as modules
  • outputs.tf is at root only as terraform 0.12+ does not support modules outputs
  • packer scripts that creates ami after some script changes you want
  • ec2 creates based on newly created by packer ami
  • make ec2 public and connect with public subnet so able to ssh without any inbound rule modification
  • build-infra.bat that has packer and terraform commands to build complete infrastructure

Commands:

  • packer validate FILENAME
  • packer build FILENAME

3-asg

This folder contains terraform sample scripts that

  • creates asg, elb, user-data, custom ssl
  • EC2 attaches to ELB and ELB in-turns attaches to ASG
    • User can access EC2 website via ELB on port 80 (http), port 443 (https), port 8000 (http).
    • SSL is custom generated so you will experience ssl warning on port 443
  • creates launch configuration

4-kms

This folder contains terraform sample scripts that

  • encrypt ami
  • create kms key
  • use default i.e. aws or custom managed kms key
  • create and use custom managed kms key

5-separate-modules

This folder contains terraform sample scripts that

  • has proper steps for SSL
  • create separate modules for admin tasks, iam and infra etc
  • infra module managed so it can be called multiple times with param

6-httpd-logs

This folder contains terraform (packer) sample scripts that

  • ami is changed to have custom httpd conf
  • configuration to disable logging for
    • (internal dummy connection)
    • "ELB-HealthChecker/1.0"
    • 408 (in-progress)

7-S3

This folder contains terraform sample scripts that

  • has configuration to log rotate httpd logs
  • compress logs datewise and restart httpd after that
  • create S3 bucket
  • configure EC2 to connect with S3
  • move logs to S3 bucket
  • packer module updated to have httpd logrotate conf
  • scripts for logrotate and S£
  • user data to configure aws
  • Note: Four properties added to logrotate
    • rotate 5 -> So files after logrotate do not delete
    • maxage 5 -> To keep rotate files for how many dates
    • dateext -> To attach date to gzip files
    • dateformat -%Y%m%d-%s -> format of date