Skip to content

Commit

Permalink
feat!: Raise minimum required Terraform version to 1.0+ (#331)
Browse files Browse the repository at this point in the history
  • Loading branch information
bryantbiggs authored Apr 28, 2023
1 parent 7ffbfc3 commit 9d4e0ca
Show file tree
Hide file tree
Showing 15 changed files with 511 additions and 227 deletions.
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/antonbabenko/pre-commit-terraform
rev: v1.77.0
rev: v1.77.3
hooks:
- id: terraform_fmt
- id: terraform_wrapper_module_for_each
Expand Down
46 changes: 21 additions & 25 deletions README.md

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions examples/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Examples

Please note - the examples provided serve two primary means:

1. Show users working examples of the various ways in which the module can be configured and features supported
2. A means of testing/validating module changes

Please do not mistake the examples provided as "best practices". It is up to users to consult the AWS service documentation for best practices, usage recommendations, etc.
9 changes: 5 additions & 4 deletions examples/complete/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ Note that this example may create resources which can cost money. Run `terraform

| Name | Version |
|------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 0.13.1 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.7 |
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.20 |

## Providers

| Name | Version |
|------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.7 |
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.20 |

## Modules

Expand All @@ -43,7 +43,7 @@ Note that this example may create resources which can cost money. Run `terraform
| <a name="module_ec2_t3_unlimited"></a> [ec2\_t3\_unlimited](#module\_ec2\_t3\_unlimited) | ../../ | n/a |
| <a name="module_ec2_targeted_capacity_reservation"></a> [ec2\_targeted\_capacity\_reservation](#module\_ec2\_targeted\_capacity\_reservation) | ../../ | n/a |
| <a name="module_security_group"></a> [security\_group](#module\_security\_group) | terraform-aws-modules/security-group/aws | ~> 4.0 |
| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 3.0 |
| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 4.0 |

## Resources

Expand All @@ -55,6 +55,7 @@ Note that this example may create resources which can cost money. Run `terraform
| [aws_network_interface.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/network_interface) | resource |
| [aws_placement_group.web](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/placement_group) | resource |
| [aws_ami.amazon_linux](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ami) | data source |
| [aws_availability_zones.available](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/availability_zones) | data source |

## Inputs

Expand Down
40 changes: 23 additions & 17 deletions examples/complete/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,31 @@ provider "aws" {
region = local.region
}

data "aws_availability_zones" "available" {}

locals {
name = "example-ec2-complete"
name = "ex-${basename(path.cwd)}"
region = "eu-west-1"

vpc_cidr = "10.0.0.0/16"
azs = slice(data.aws_availability_zones.available.names, 0, 3)

user_data = <<-EOT
#!/bin/bash
echo "Hello Terraform!"
#!/bin/bash
echo "Hello Terraform!"
EOT

tags = {
Owner = "user"
Environment = "dev"
Name = local.name
Example = local.name
Repository = "https://github.com/terraform-aws-modules/terraform-aws-ec2-instance"
}
}

################################################################################
# EC2 Module
################################################################################

module "ec2_disabled" {
source = "../../"

create = false
}

module "ec2_complete" {
source = "../../"

Expand Down Expand Up @@ -153,6 +153,13 @@ module "ec2_t3_unlimited" {
tags = local.tags
}


module "ec2_disabled" {
source = "../../"

create = false
}

################################################################################
# EC2 Module - multiple instances with `for_each`
################################################################################
Expand Down Expand Up @@ -333,15 +340,14 @@ resource "aws_ec2_capacity_reservation" "targeted" {

module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "~> 3.0"
version = "~> 4.0"

name = local.name
cidr = "10.99.0.0/18"
cidr = local.vpc_cidr

azs = ["${local.region}a", "${local.region}b", "${local.region}c"]
public_subnets = ["10.99.0.0/24", "10.99.1.0/24", "10.99.2.0/24"]
private_subnets = ["10.99.3.0/24", "10.99.4.0/24", "10.99.5.0/24"]
database_subnets = ["10.99.7.0/24", "10.99.8.0/24", "10.99.9.0/24"]
azs = local.azs
private_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 4, k)]
public_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 8, k + 48)]

tags = local.tags
}
Expand Down
4 changes: 2 additions & 2 deletions examples/complete/versions.tf
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
terraform {
required_version = ">= 0.13.1"
required_version = ">= 1.0"

required_providers {
aws = {
source = "hashicorp/aws"
version = ">= 4.7"
version = ">= 4.20"
}
}
}
9 changes: 5 additions & 4 deletions examples/volume-attachment/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,22 @@ Note that this example may create resources which can cost money. Run `terraform

| Name | Version |
|------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 0.13.1 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 3.72 |
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.20 |

## Providers

| Name | Version |
|------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 3.72 |
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.20 |

## Modules

| Name | Source | Version |
|------|--------|---------|
| <a name="module_ec2"></a> [ec2](#module\_ec2) | ../../ | n/a |
| <a name="module_security_group"></a> [security\_group](#module\_security\_group) | terraform-aws-modules/security-group/aws | ~> 4.0 |
| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 3.0 |
| <a name="module_vpc"></a> [vpc](#module\_vpc) | terraform-aws-modules/vpc/aws | ~> 4.0 |

## Resources

Expand All @@ -45,6 +45,7 @@ Note that this example may create resources which can cost money. Run `terraform
| [aws_ebs_volume.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ebs_volume) | resource |
| [aws_volume_attachment.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/volume_attachment) | resource |
| [aws_ami.amazon_linux](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ami) | data source |
| [aws_availability_zones.available](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/availability_zones) | data source |

## Inputs

Expand Down
91 changes: 48 additions & 43 deletions examples/volume-attachment/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,68 @@ provider "aws" {
region = local.region
}

data "aws_availability_zones" "available" {}

locals {
availability_zone = "${local.region}a"
name = "example-ec2-volume-attachment"
region = "eu-west-1"
name = "ex-${basename(path.cwd)}"
region = "eu-west-1"

vpc_cidr = "10.0.0.0/16"
azs = slice(data.aws_availability_zones.available.names, 0, 3)

tags = {
Owner = "user"
Environment = "dev"
Name = local.name
Example = local.name
Repository = "https://github.com/terraform-aws-modules/terraform-aws-ec2-instance"
}
}

################################################################################
# EC2 Module
################################################################################

module "ec2" {
source = "../../"

name = local.name

ami = data.aws_ami.amazon_linux.id
instance_type = "c5.large"
availability_zone = element(local.azs, 0)
subnet_id = element(module.vpc.private_subnets, 0)
vpc_security_group_ids = [module.security_group.security_group_id]
associate_public_ip_address = true

tags = local.tags
}

resource "aws_volume_attachment" "this" {
device_name = "/dev/sdh"
volume_id = aws_ebs_volume.this.id
instance_id = module.ec2.id
}

resource "aws_ebs_volume" "this" {
availability_zone = element(local.azs, 0)
size = 1

tags = local.tags
}

################################################################################
# Supporting Resources
################################################################################

module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "~> 3.0"
version = "~> 4.0"

name = local.name
cidr = "10.99.0.0/18"
cidr = local.vpc_cidr

azs = ["${local.region}a", "${local.region}b", "${local.region}c"]
public_subnets = ["10.99.0.0/24", "10.99.1.0/24", "10.99.2.0/24"]
private_subnets = ["10.99.3.0/24", "10.99.4.0/24", "10.99.5.0/24"]
database_subnets = ["10.99.7.0/24", "10.99.8.0/24", "10.99.9.0/24"]
azs = local.azs
private_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 4, k)]
public_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 8, k + 48)]

tags = local.tags
}
Expand Down Expand Up @@ -55,35 +92,3 @@ module "security_group" {

tags = local.tags
}

################################################################################
# EC2 Module
################################################################################

module "ec2" {
source = "../../"

name = local.name

ami = data.aws_ami.amazon_linux.id
instance_type = "c5.large"
availability_zone = local.availability_zone
subnet_id = element(module.vpc.private_subnets, 0)
vpc_security_group_ids = [module.security_group.security_group_id]
associate_public_ip_address = true

tags = local.tags
}

resource "aws_volume_attachment" "this" {
device_name = "/dev/sdh"
volume_id = aws_ebs_volume.this.id
instance_id = module.ec2.id
}

resource "aws_ebs_volume" "this" {
availability_zone = local.availability_zone
size = 1

tags = local.tags
}
4 changes: 2 additions & 2 deletions examples/volume-attachment/versions.tf
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
terraform {
required_version = ">= 0.13.1"
required_version = ">= 1.0"

required_providers {
aws = {
source = "hashicorp/aws"
version = ">= 3.72"
version = ">= 4.20"
}
}
}
Loading

0 comments on commit 9d4e0ca

Please sign in to comment.