diff --git a/README.md b/README.md index 6220d25..00006b3 100644 --- a/README.md +++ b/README.md @@ -18,14 +18,23 @@ VPC module for creating networks, load balancers and gateways | template | >= 2.2.0 | ## Usage -``` +``` hcl module "network" { source = "https://github.com/provectus/sak-vpc.git" - availability_zones = var.availability_zones - environment = local.environment - project = local.project - cluster_name = local.cluster_name - network = 10 + availability_zones = var.availability_zones + environment = local.environment + project = local.project + cluster_name = local.cluster_name + network = 10 + + additional_private_subnet_tags = { + "kubernetes.io/cluster/${local.cluster_name}" = "shared" + "kubernetes.io/role/internal-elb" = "" + } + + additional_public_subnet_tags = { + "kubernetes.io/cluster/${local.cluster_name}" = "shared" + } } ``` diff --git a/main.tf b/main.tf index f0965b2..e9f400b 100644 --- a/main.tf +++ b/main.tf @@ -1,8 +1,22 @@ locals { - zones = coalescelist(var.availability_zones, data.aws_availability_zones.available.names) - cidr = var.cidr != null ? var.cidr : "10.${var.network}.0.0/16" - private = var.cidr != null ? [for i, z in local.zones : cidrsubnet(local.cidr, var.network_delimiter, i)] : data.template_file.private.*.rendered - public = var.cidr != null ? [for i, z in local.zones : cidrsubnet(local.cidr, var.network_delimiter, pow(2, var.network_delimiter) - i)] : data.template_file.public.*.rendered + zones = coalescelist(var.availability_zones, data.aws_availability_zones.available.names) + cidr = var.cidr != null ? var.cidr : "10.${var.network}.0.0/16" + private = var.cidr != null ? [for i, z in local.zones : cidrsubnet(local.cidr, var.network_delimiter, i)] : data.template_file.private.*.rendered + public = var.cidr != null ? [for i, z in local.zones : cidrsubnet(local.cidr, var.network_delimiter, pow(2, var.network_delimiter) - i)] : data.template_file.public.*.rendered + + public_subnet_tags = { + Name = "${var.environment}-${var.cluster_name}-public" + KubernetesCluster = var.cluster_name + Environment = var.environment + Project = var.project + "kubernetes.io/cluster/${var.cluster_name}" = "owned" + "kubernetes.io/role/elb" = "" + } + + private_subnet_tags = { + Name = "${var.environment}-${var.cluster_name}-private" + "kubernetes.io/cluster/${var.cluster_name}" = "owned" + } } data "aws_availability_zones" "available" {} @@ -35,21 +49,17 @@ module "vpc" { enable_dns_hostnames = true enable_dns_support = true - public_subnet_tags = { - Name = "${var.environment}-${var.cluster_name}-public" - KubernetesCluster = var.cluster_name - Environment = var.environment - Project = var.project - "kubernetes.io/role/elb" = "1" - "kubernetes.io/cluster/${var.cluster_name}" = "owned" - "kubernetes.io/cluster/${var.cluster_name}" = "shared" - } + public_subnet_tags = ( + length(var.additional_public_subnet_tags) > 0 + ? merge(local.public_subnet_tags, var.additional_public_subnet_tags) + : local.public_subnet_tags + ) - private_subnet_tags = { - Name = "${var.environment}-${var.cluster_name}-private" - "kubernetes.io/role/elb-internal" = "1" - "kubernetes.io/cluster/${var.cluster_name}" = "owned" - } + private_subnet_tags = ( + length(var.additional_private_subnet_tags) > 0 + ? merge(local.private_subnet_tags, var.additional_private_subnet_tags) + : local.private_subnet_tags + ) tags = { Name = "${var.environment}-${var.cluster_name}" diff --git a/variables.tf b/variables.tf index a88d667..e92c3a3 100644 --- a/variables.tf +++ b/variables.tf @@ -45,3 +45,15 @@ variable "availability_zones" { type = list(any) default = [] } + +variable "additional_public_subnet_tags" { + type = map(string) + default = {} + description = "A value that will be added to default tags to public subnet" +} + +variable "additional_private_subnet_tags" { + type = map(string) + default = {} + description = "A value that will be added to default tags to private subnet" +} \ No newline at end of file