TerraformV13 by DevOps Muhammad Asim

Youtube Channel

https://www.youtube.com/c/AWSLinuxWindows

a. terraform init b. terraform plan c terraform apply

  1. terraform destroy -target resource_type.resource_logical_name

  2. terraform get -update=true

  3. terraform output -module=module-name

4.terraform plan -target=module.cloudgeeks.ca-vpc ---> only plan specific modules or terraform apply -target resource_type.resource_logical_name

Example: terraform.exe apply -target aws_ecs_service.aws-ecs-service-driver-prod

5.terraform apply -target=module.cloudgeeks.ca-vpc ---> only apply specific modules

6.terraform state pull----> ok

7.terraform state push---->danger

8.terraform state rm module.cloudgeeks.ca-rds-app1 ----> https://stackoverflow.com/questions/43950097/how-to-import-manual-changes-into-terraform-remote-state

9.terraform show ---> see after deployment

  1. terraform state list

#Note: Pull directly from git hub

#https://www.terraform.io/docs/modules/sources.html

  1. source = "github.com/quickbooks2018/Terraform-Classic-Modules/modules/vpc"

ssh generate public key from a private key

  1. ssh-keygen -y -f terraform.pem > terraform.pub

  2. terraform apply -var-file=dmz.tfvars

  3. terraform destroy -var-file=dmz.tfvars

  4. terraform import -var-file=dmz.tfvars module.sg7.aws_security_group.security_group sg-00afc6e255cc55387

  5. terraform plan -var-file=secrets.tfvars -var-file=dmz.tfvars -target=module.directory-service -out plan

#############################################################################################################

List the Terraform commands:

terraform Common commands: apply: Builds or changes infrastructure console: Interactive console for Terraform interpolations destroy: Destroys Terraform-managed infrastructure fmt: Rewrites configuration files to canonical format get: Downloads and installs modules for the configuration graph: Creates a visual graph of Terraform resources import: Imports existing infrastructure into Terraform init: Initializes a new or existing Terraform configuration output: Reads an output from a state file plan: Generates and shows an execution plan providers: Prints a tree of the providers used in the configuration push: Uploads this Terraform module to Terraform Enterprise to run refresh: Updates local state file against real resources show: Inspects Terraform state or plan taint: Manually marks a resource for recreation untaint: Manually unmarks a resource as tainted validate: Validates the Terraform files version: Prints the Terraform version workspace: Workspace management

Set up the environment:

mkdir -p terraform/basics cd terraform/basics Create a Terraform script:

vi main.tf main.tf contents:

Download the latest Ghost image

resource "docker_image" "image_id" { name = "ghost:latest" } Initialize Terraform:

terraform init Validate the Terraform file:

terraform validate List providers in the folder:

ls .terraform/plugins/linux_amd64/ List providers used in the configuration:

terraform providers Terraform Plan:

terraform plan Useful flags for plan: -out=path: Writes a plan file to the given path. This can be used as input to the "apply" command. -var 'foo=bar': Set a variable in the Terraform configuration. This flag can be set multiple times.

Terraform Apply:

terraform apply Useful flags for apply: -auto-approve: This skips interactive approval of plan before applying. -var 'foo=bar': This sets a variable in the Terraform configuration. It can be set multiple times.

Confirm your apply by typing yes. The apply will take a bit to complete.

List the Docker images:

docker image ls Terraform Show:

terraform show Terraform Destroy:

terraform destroy Confirm your destroy by typing yes.

Useful flags for destroys: -auto-approve: Skip interactive approval of plan before applying.

Re-list the Docker images:

docker image ls Using a plan:

terraform plan -out=tfplan Applying a plan:

terraform apply tfplan Show the Docker Image resource:

terraform show Destroy the resource once again:

terraform destroy