aboutsummaryrefslogtreecommitdiffstats
path: root/fdio.infra.terraform/terraform-aws-subnet
diff options
context:
space:
mode:
Diffstat (limited to 'fdio.infra.terraform/terraform-aws-subnet')
-rw-r--r--fdio.infra.terraform/terraform-aws-subnet/README.md44
-rw-r--r--fdio.infra.terraform/terraform-aws-subnet/example/main.tf17
-rw-r--r--fdio.infra.terraform/terraform-aws-subnet/example/output.tf0
-rw-r--r--fdio.infra.terraform/terraform-aws-subnet/example/providers.tf3
-rw-r--r--fdio.infra.terraform/terraform-aws-subnet/example/variables.tf5
-rw-r--r--fdio.infra.terraform/terraform-aws-subnet/example/versions.tf9
-rw-r--r--fdio.infra.terraform/terraform-aws-subnet/main.tf26
-rw-r--r--fdio.infra.terraform/terraform-aws-subnet/outputs.tf4
-rw-r--r--fdio.infra.terraform/terraform-aws-subnet/variables.tf45
-rw-r--r--fdio.infra.terraform/terraform-aws-subnet/versions.tf9
10 files changed, 162 insertions, 0 deletions
diff --git a/fdio.infra.terraform/terraform-aws-subnet/README.md b/fdio.infra.terraform/terraform-aws-subnet/README.md
new file mode 100644
index 0000000000..54986d1ddb
--- /dev/null
+++ b/fdio.infra.terraform/terraform-aws-subnet/README.md
@@ -0,0 +1,44 @@
+<!-- BEGIN_TF_DOCS -->
+## Requirements
+
+| Name | Version |
+|------|---------|
+| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0.4 |
+| <a name="requirement_aws"></a> [aws](#requirement\_aws) | ~> 4.3.0 |
+
+## Providers
+
+| Name | Version |
+|------|---------|
+| <a name="provider_aws"></a> [aws](#provider\_aws) | ~> 4.3.0 |
+
+## Modules
+
+No modules.
+
+## Resources
+
+| Name | Type |
+|------|------|
+| [aws_subnet.subnet](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/subnet) | resource |
+| [aws_vpc_ipv4_cidr_block_association.ipv4_cidr_block_association](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/vpc_ipv4_cidr_block_association) | resource |
+
+## Inputs
+
+| Name | Description | Type | Default | Required |
+|------|-------------|------|---------|:--------:|
+| <a name="input_subnet_assign_ipv6_address_on_creation"></a> [subnet\_assign\_ipv6\_address\_on\_creation](#input\_subnet\_assign\_ipv6\_address\_on\_creation) | Specify true to indicate that network interfaces created in the specified subnet should be assigned an IPv6 address. | `bool` | `false` | no |
+| <a name="input_subnet_availability_zone"></a> [subnet\_availability\_zone](#input\_subnet\_availability\_zone) | AZ for the subnet. | `string` | `"us-east-1a"` | no |
+| <a name="input_subnet_cidr_block"></a> [subnet\_cidr\_block](#input\_subnet\_cidr\_block) | The IPv4 CIDR block for the subnet. | `string` | n/a | yes |
+| <a name="input_subnet_ipv6_cidr_block"></a> [subnet\_ipv6\_cidr\_block](#input\_subnet\_ipv6\_cidr\_block) | The IPv6 network range for the subnet, in CIDR notation. | `string` | n/a | yes |
+| <a name="input_subnet_map_public_ip_on_launch"></a> [subnet\_map\_public\_ip\_on\_launch](#input\_subnet\_map\_public\_ip\_on\_launch) | Specify true to indicate that instances launched into the subnet should be assigned a public IP address. | `bool` | `false` | no |
+| <a name="input_subnet_vpc_id"></a> [subnet\_vpc\_id](#input\_subnet\_vpc\_id) | The VPC ID. | `string` | n/a | yes |
+| <a name="input_tags_environment"></a> [tags\_environment](#input\_tags\_environment) | Environment used for tag. | `string` | `""` | no |
+| <a name="input_tags_name"></a> [tags\_name](#input\_tags\_name) | Name used for tag. | `string` | `""` | no |
+
+## Outputs
+
+| Name | Description |
+|------|-------------|
+| <a name="output_subnet_id"></a> [subnet\_id](#output\_subnet\_id) | The ID of the Subnet |
+<!-- END_TF_DOCS --> \ No newline at end of file
diff --git a/fdio.infra.terraform/terraform-aws-subnet/example/main.tf b/fdio.infra.terraform/terraform-aws-subnet/example/main.tf
new file mode 100644
index 0000000000..98f8613876
--- /dev/null
+++ b/fdio.infra.terraform/terraform-aws-subnet/example/main.tf
@@ -0,0 +1,17 @@
+module "vpc" {
+ source = "../../terraform-aws-vpc"
+ security_group_name = "terraform-sg"
+ subnet_availability_zone = "us-east-1a"
+ tags_name = "terraform-vpc"
+ tags_environment = "terraform-vpc-environment"
+}
+
+module "subnet" {
+ source = "../"
+ subnet_cidr_block = "192.168.10.0/24"
+ subnet_ipv6_cidr_block = cidrsubnet(module.vpc.vpc_ipv6_cidr_block, 8, 1)
+ subnet_availability_zone = "us-east-1a"
+ tags_name = "terraform-subnet"
+ tags_environment = "terraform-subnet-environment"
+ subnet_vpc_id = module.vpc.vpc_id
+}
diff --git a/fdio.infra.terraform/terraform-aws-subnet/example/output.tf b/fdio.infra.terraform/terraform-aws-subnet/example/output.tf
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/fdio.infra.terraform/terraform-aws-subnet/example/output.tf
diff --git a/fdio.infra.terraform/terraform-aws-subnet/example/providers.tf b/fdio.infra.terraform/terraform-aws-subnet/example/providers.tf
new file mode 100644
index 0000000000..5ff54f0d65
--- /dev/null
+++ b/fdio.infra.terraform/terraform-aws-subnet/example/providers.tf
@@ -0,0 +1,3 @@
+provider "aws" {
+ region = var.region
+} \ No newline at end of file
diff --git a/fdio.infra.terraform/terraform-aws-subnet/example/variables.tf b/fdio.infra.terraform/terraform-aws-subnet/example/variables.tf
new file mode 100644
index 0000000000..f75f3d547f
--- /dev/null
+++ b/fdio.infra.terraform/terraform-aws-subnet/example/variables.tf
@@ -0,0 +1,5 @@
+variable "region" {
+ description = "AWS Region."
+ type = string
+ default = "us-east-1"
+}
diff --git a/fdio.infra.terraform/terraform-aws-subnet/example/versions.tf b/fdio.infra.terraform/terraform-aws-subnet/example/versions.tf
new file mode 100644
index 0000000000..7afde83d1b
--- /dev/null
+++ b/fdio.infra.terraform/terraform-aws-subnet/example/versions.tf
@@ -0,0 +1,9 @@
+terraform {
+ required_providers {
+ aws = {
+ source = "hashicorp/aws"
+ version = ">= 5.1.0"
+ }
+ }
+ required_version = ">= 1.4.2"
+} \ No newline at end of file
diff --git a/fdio.infra.terraform/terraform-aws-subnet/main.tf b/fdio.infra.terraform/terraform-aws-subnet/main.tf
new file mode 100644
index 0000000000..d14aa5f827
--- /dev/null
+++ b/fdio.infra.terraform/terraform-aws-subnet/main.tf
@@ -0,0 +1,26 @@
+locals {
+ tags = {
+ "Name" = "${var.tags_name}"
+ "Environment" = "${var.tags_environment}"
+ }
+}
+
+# Create VPC IPv4 CIDR Block Association
+resource "aws_vpc_ipv4_cidr_block_association" "ipv4_cidr_block_association" {
+ cidr_block = var.subnet_cidr_block
+ vpc_id = var.subnet_vpc_id
+}
+
+# Create Subnet
+resource "aws_subnet" "subnet" {
+ depends_on = [
+ aws_vpc_ipv4_cidr_block_association.ipv4_cidr_block_association
+ ]
+ assign_ipv6_address_on_creation = var.subnet_assign_ipv6_address_on_creation
+ availability_zone = var.subnet_availability_zone
+ cidr_block = var.subnet_cidr_block
+ ipv6_cidr_block = var.subnet_ipv6_cidr_block
+ map_public_ip_on_launch = var.subnet_map_public_ip_on_launch
+ tags = local.tags
+ vpc_id = var.subnet_vpc_id
+}
diff --git a/fdio.infra.terraform/terraform-aws-subnet/outputs.tf b/fdio.infra.terraform/terraform-aws-subnet/outputs.tf
new file mode 100644
index 0000000000..7f17d95717
--- /dev/null
+++ b/fdio.infra.terraform/terraform-aws-subnet/outputs.tf
@@ -0,0 +1,4 @@
+output "subnet_id" {
+ value = aws_subnet.subnet.id
+ description = "The ID of the Subnet"
+}
diff --git a/fdio.infra.terraform/terraform-aws-subnet/variables.tf b/fdio.infra.terraform/terraform-aws-subnet/variables.tf
new file mode 100644
index 0000000000..c0e1fad157
--- /dev/null
+++ b/fdio.infra.terraform/terraform-aws-subnet/variables.tf
@@ -0,0 +1,45 @@
+variable "tags_name" {
+ description = "Name used for tag."
+ type = string
+ default = ""
+}
+
+variable "tags_environment" {
+ description = "Environment used for tag."
+ type = string
+ default = ""
+}
+
+# Variables for Subnet
+variable "subnet_assign_ipv6_address_on_creation" {
+ description = "Specify true to indicate that network interfaces created in the specified subnet should be assigned an IPv6 address."
+ type = bool
+ default = true
+}
+
+variable "subnet_availability_zone" {
+ description = "AZ for the subnet."
+ type = string
+ default = "us-east-1a"
+}
+
+variable "subnet_cidr_block" {
+ description = "The IPv4 CIDR block for the subnet."
+ type = string
+}
+
+variable "subnet_ipv6_cidr_block" {
+ description = "The IPv6 network range for the subnet, in CIDR notation."
+ type = string
+}
+
+variable "subnet_map_public_ip_on_launch" {
+ description = "Specify true to indicate that instances launched into the subnet should be assigned a public IP address."
+ type = bool
+ default = false
+}
+
+variable "subnet_vpc_id" {
+ description = "The VPC ID."
+ type = string
+}
diff --git a/fdio.infra.terraform/terraform-aws-subnet/versions.tf b/fdio.infra.terraform/terraform-aws-subnet/versions.tf
new file mode 100644
index 0000000000..7afde83d1b
--- /dev/null
+++ b/fdio.infra.terraform/terraform-aws-subnet/versions.tf
@@ -0,0 +1,9 @@
+terraform {
+ required_providers {
+ aws = {
+ source = "hashicorp/aws"
+ version = ">= 5.1.0"
+ }
+ }
+ required_version = ">= 1.4.2"
+} \ No newline at end of file