terraform-aws-anything icon indicating copy to clipboard operation
terraform-aws-anything copied to clipboard

Content for "Manage any AWS resource with Terraform"

This repository contains content for my talk "Manage any AWS resource with Terraform".

Available types of AWS resources:

  1. Supported by Terraform AWS provider. See 1-terraform.
  2. Supported only by AWS CloudFormation, but not by Terraform AWS provider. See 2-cloudformation.
  3. Supported by AWS SDK/CLI and not in AWS CloudFormation. See 3-cli.
  4. Partially supported by Terraform AWS provider (some arguments are not supported). See 4-partial-terraform.
  5. Not supported in AWS CLI/SDK. Good luck with Selenium! or take a look at Ian's work with Puppeteer :trollface: :trollface: :trollface:

Available solutions to manage AWS resources using Terraform include:

  1. Use local-exec provisioner with aws-cli
  2. Use shell provider
  3. Patch the Terraform AWS provider using golang

Flow:

  1. Import existing resources into state

  2. Refactoring states:

  • from/to module
  • to another state-file
  • terraform state list | grep -v module..... | xargs -Ixx terraform state rm xx
  1. Migrate from AWS Cloudformation to Terraform

See also

  1. Talk "I Can’t Do This With Terraform, Now What?" by Patrick Conheady given at HashiTalks 2020. See this repository and this recording.