From 6f55e6738913349077ad29b67b3d4139b8b62905 Mon Sep 17 00:00:00 2001 From: staebler Date: Sun, 11 Nov 2018 13:09:06 -0500 Subject: [PATCH 1/3] terraform/aws: remove option to use an existing vpc in aws For the limited scope of the installer, we do not want the user to have the ability to share the VPC between clusters. A shared VPC could potentially be deleted when destroying one of the clusters, leaving the rest of the clusters using the shared VPC in an unusable state. Fixes https://jira.coreos.com/browse/CORS-873 --- data/data/aws/main.tf | 12 +++++------- data/data/aws/route53/variables.tf | 11 ----------- data/data/aws/variables-aws.tf | 13 ------------- data/data/aws/vpc/common.tf | 16 ++++++---------- data/data/aws/vpc/variables.tf | 4 ---- data/data/aws/vpc/vpc-public.tf | 4 ---- data/data/aws/vpc/vpc.tf | 1 - pkg/tfvars/aws/aws.go | 3 +-- pkg/tfvars/tfvars.go | 9 +++------ pkg/types/aws/platform.go | 6 ------ 10 files changed, 15 insertions(+), 64 deletions(-) diff --git a/data/data/aws/main.tf b/data/data/aws/main.tf index 59ce2ea3f0f..b75c515e670 100644 --- a/data/data/aws/main.tf +++ b/data/data/aws/main.tf @@ -75,7 +75,6 @@ module "dns" { elb_alias_enabled = true master_count = "${var.master_count}" private_zone_id = "${local.private_zone_id}" - external_vpc_id = "${module.vpc.vpc_id}" extra_tags = "${var.aws_extra_tags}" private_endpoints = "${local.private_endpoints}" public_endpoints = "${local.public_endpoints}" @@ -84,12 +83,11 @@ module "dns" { module "vpc" { source = "./vpc" - base_domain = "${var.base_domain}" - cidr_block = "${var.aws_vpc_cidr_block}" - cluster_id = "${var.cluster_id}" - cluster_name = "${var.cluster_name}" - external_vpc_id = "${var.aws_external_vpc_id}" - region = "${var.aws_region}" + base_domain = "${var.base_domain}" + cidr_block = "${var.aws_vpc_cidr_block}" + cluster_id = "${var.cluster_id}" + cluster_name = "${var.cluster_name}" + region = "${var.aws_region}" external_master_subnet_ids = "${compact(var.aws_external_master_subnet_ids)}" external_worker_subnet_ids = "${compact(var.aws_external_worker_subnet_ids)}" diff --git a/data/data/aws/route53/variables.tf b/data/data/aws/route53/variables.tf index e26deecf501..65a1b8a1417 100644 --- a/data/data/aws/route53/variables.tf +++ b/data/data/aws/route53/variables.tf @@ -60,17 +60,6 @@ EOF default = false } -variable "external_vpc_id" { - type = "string" - - description = < Date: Fri, 16 Nov 2018 14:36:51 -0500 Subject: [PATCH 2/3] terraform/aws: remove unused options around using external VPC With the removal of the option to use an external VPC, the following variables are not used and are removed. aws_external_master_subnet_ids aws_external_private_zone aws_external_worker_subnet_ids https://jira.coreos.com/browse/CORS-873 --- data/data/aws/main.tf | 8 +++---- data/data/aws/variables-aws.tf | 38 ---------------------------------- data/data/aws/vpc/common.tf | 6 +++--- data/data/aws/vpc/variables.tf | 8 ------- pkg/tfvars/aws/aws.go | 12 ++--------- 5 files changed, 8 insertions(+), 64 deletions(-) diff --git a/data/data/aws/main.tf b/data/data/aws/main.tf index b75c515e670..69de2918aa7 100644 --- a/data/data/aws/main.tf +++ b/data/data/aws/main.tf @@ -1,7 +1,7 @@ locals { private_endpoints = "${var.aws_endpoints == "public" ? false : true}" public_endpoints = "${var.aws_endpoints == "private" ? false : true}" - private_zone_id = "${var.aws_external_private_zone != "" ? var.aws_external_private_zone : join("", aws_route53_zone.int.*.zone_id)}" + private_zone_id = "${join("", aws_route53_zone.int.*.zone_id)}" } provider "aws" { @@ -89,9 +89,7 @@ module "vpc" { cluster_name = "${var.cluster_name}" region = "${var.aws_region}" - external_master_subnet_ids = "${compact(var.aws_external_master_subnet_ids)}" - external_worker_subnet_ids = "${compact(var.aws_external_worker_subnet_ids)}" - extra_tags = "${var.aws_extra_tags}" + extra_tags = "${var.aws_extra_tags}" // empty map subnet_configs will have the vpc module creating subnets in all availabile AZs new_master_subnet_configs = "${var.aws_master_custom_subnets}" @@ -119,7 +117,7 @@ resource "aws_route53_record" "etcd_cluster" { } resource "aws_route53_zone" "int" { - count = "${local.private_endpoints ? "${var.aws_external_private_zone == "" ? 1 : 0 }" : 0}" + count = "${local.private_endpoints ? 1 : 0}" vpc_id = "${module.vpc.vpc_id}" name = "${var.base_domain}" force_destroy = true diff --git a/data/data/aws/variables-aws.tf b/data/data/aws/variables-aws.tf index 9afc0e7f074..ec048f60ce1 100644 --- a/data/data/aws/variables-aws.tf +++ b/data/data/aws/variables-aws.tf @@ -49,44 +49,6 @@ If set to "public", then only create public-facing ingress resources (ELB, A-rec EOF } -variable "aws_external_private_zone" { - default = "" - - description = < Date: Fri, 16 Nov 2018 15:51:23 -0500 Subject: [PATCH 3/3] terraform: remove some more unused aws variables aws_endpoints aws_installer_role aws_master_custom_subnets aws_master_extra_sg_ids aws_worker_custom_subnets https://jira.coreos.com/browse/CORS-873 --- data/data/aws/bootstrap/main.tf | 2 +- data/data/aws/bootstrap/variables.tf | 5 --- data/data/aws/main.tf | 40 +++++--------------- data/data/aws/master/main.tf | 2 +- data/data/aws/master/variables.tf | 5 --- data/data/aws/route53/base.tf | 13 +------ data/data/aws/route53/master.tf | 8 ---- data/data/aws/route53/variables.tf | 24 ------------ data/data/aws/route53/worker.tf | 9 ----- data/data/aws/variables-aws.tf | 55 ---------------------------- data/data/aws/vpc/common.tf | 12 +++--- data/data/aws/vpc/master-elb.tf | 12 ------ data/data/aws/vpc/outputs.tf | 13 ++++--- data/data/aws/vpc/variables.tf | 10 ----- data/data/aws/vpc/vpc-private.tf | 19 ++++------ data/data/aws/vpc/vpc-public.tf | 17 ++++----- pkg/tfvars/aws/aws.go | 23 ++---------- pkg/tfvars/tfvars.go | 1 - 18 files changed, 44 insertions(+), 226 deletions(-) delete mode 100644 data/data/aws/route53/master.tf diff --git a/data/data/aws/bootstrap/main.tf b/data/data/aws/bootstrap/main.tf index 11e896dba29..cf1cf2eeee1 100644 --- a/data/data/aws/bootstrap/main.tf +++ b/data/data/aws/bootstrap/main.tf @@ -109,7 +109,7 @@ resource "aws_instance" "bootstrap" { subnet_id = "${var.subnet_id}" user_data = "${data.ignition_config.redirect.rendered}" vpc_security_group_ids = ["${var.vpc_security_group_ids}"] - associate_public_ip_address = "${var.associate_public_ip_address}" + associate_public_ip_address = true lifecycle { # Ignore changes in the AMI which force recreation of the resource. This diff --git a/data/data/aws/bootstrap/variables.tf b/data/data/aws/bootstrap/variables.tf index 7b394643bc7..724d2ddf56a 100644 --- a/data/data/aws/bootstrap/variables.tf +++ b/data/data/aws/bootstrap/variables.tf @@ -3,11 +3,6 @@ variable "ami" { description = "The AMI ID for the bootstrap node." } -variable "associate_public_ip_address" { - default = false - description = "If set to true, public-facing ingress resources are created." -} - variable "cluster_name" { type = "string" description = "The name of the cluster." diff --git a/data/data/aws/main.tf b/data/data/aws/main.tf index 69de2918aa7..3e7e9192657 100644 --- a/data/data/aws/main.tf +++ b/data/data/aws/main.tf @@ -1,31 +1,23 @@ locals { - private_endpoints = "${var.aws_endpoints == "public" ? false : true}" - public_endpoints = "${var.aws_endpoints == "private" ? false : true}" - private_zone_id = "${join("", aws_route53_zone.int.*.zone_id)}" + private_zone_id = "${aws_route53_zone.int.zone_id}" } provider "aws" { region = "${var.aws_region}" version = "1.39.0" - - assume_role { - role_arn = "${var.aws_installer_role == "" ? "" : "${var.aws_installer_role}"}" - session_name = "OPENSHIFT_INSTALLER_${var.cluster_name}" - } } module "bootstrap" { source = "./bootstrap" - ami = "${var.aws_ec2_ami_override}" - associate_public_ip_address = "${var.aws_endpoints != "private"}" - cluster_name = "${var.cluster_name}" - iam_role = "${var.aws_master_iam_role_name}" - ignition = "${var.ignition_bootstrap}" - subnet_id = "${module.vpc.master_subnet_ids[0]}" - target_group_arns = "${module.vpc.aws_lb_target_group_arns}" - target_group_arns_length = "${module.vpc.aws_lb_target_group_arns_length}" - vpc_security_group_ids = ["${concat(var.aws_master_extra_sg_ids, list(module.vpc.master_sg_id))}"] + ami = "${var.aws_ec2_ami_override}" + cluster_name = "${var.cluster_name}" + iam_role = "${var.aws_master_iam_role_name}" + ignition = "${var.ignition_bootstrap}" + subnet_id = "${module.vpc.master_subnet_ids[0]}" + target_group_arns = "${module.vpc.aws_lb_target_group_arns}" + target_group_arns_length = "${module.vpc.aws_lb_target_group_arns_length}" + vpc_security_group_ids = "${list(module.vpc.master_sg_id)}" tags = "${merge(map( "Name", "${var.cluster_name}-bootstrap", @@ -44,8 +36,7 @@ module "masters" { extra_tags = "${var.aws_extra_tags}" instance_count = "${var.master_count}" master_iam_role = "${var.aws_master_iam_role_name}" - master_sg_ids = "${concat(var.aws_master_extra_sg_ids, list(module.vpc.master_sg_id))}" - public_endpoints = "${local.public_endpoints}" + master_sg_ids = "${list(module.vpc.master_sg_id)}" root_volume_iops = "${var.aws_master_root_volume_iops}" root_volume_size = "${var.aws_master_root_volume_size}" root_volume_type = "${var.aws_master_root_volume_type}" @@ -72,12 +63,9 @@ module "dns" { api_internal_lb_zone_id = "${module.vpc.aws_lb_api_internal_zone_id}" base_domain = "${var.base_domain}" cluster_name = "${var.cluster_name}" - elb_alias_enabled = true master_count = "${var.master_count}" private_zone_id = "${local.private_zone_id}" extra_tags = "${var.aws_extra_tags}" - private_endpoints = "${local.private_endpoints}" - public_endpoints = "${local.public_endpoints}" } module "vpc" { @@ -90,13 +78,6 @@ module "vpc" { region = "${var.aws_region}" extra_tags = "${var.aws_extra_tags}" - - // empty map subnet_configs will have the vpc module creating subnets in all availabile AZs - new_master_subnet_configs = "${var.aws_master_custom_subnets}" - new_worker_subnet_configs = "${var.aws_worker_custom_subnets}" - - private_master_endpoints = "${local.private_endpoints}" - public_master_endpoints = "${local.public_endpoints}" } resource "aws_route53_record" "etcd_a_nodes" { @@ -117,7 +98,6 @@ resource "aws_route53_record" "etcd_cluster" { } resource "aws_route53_zone" "int" { - count = "${local.private_endpoints ? 1 : 0}" vpc_id = "${module.vpc.vpc_id}" name = "${var.base_domain}" force_destroy = true diff --git a/data/data/aws/master/main.tf b/data/data/aws/master/main.tf index cd4463cf79b..7cd0bb36050 100644 --- a/data/data/aws/master/main.tf +++ b/data/data/aws/master/main.tf @@ -84,7 +84,7 @@ resource "aws_instance" "master" { user_data = "${var.user_data_ign}" vpc_security_group_ids = ["${var.master_sg_ids}"] - associate_public_ip_address = "${var.public_endpoints}" + associate_public_ip_address = true lifecycle { # Ignore changes in the AMI which force recreation of the resource. This diff --git a/data/data/aws/master/variables.tf b/data/data/aws/master/variables.tf index f624eaa78ec..330970fce8f 100644 --- a/data/data/aws/master/variables.tf +++ b/data/data/aws/master/variables.tf @@ -51,11 +51,6 @@ variable "master_sg_ids" { description = "The security group IDs to be applied to the master nodes." } -variable "public_endpoints" { - description = "If set to true, public-facing ingress resources are created." - default = true -} - variable "root_volume_iops" { type = "string" default = "100" diff --git a/data/data/aws/route53/base.tf b/data/data/aws/route53/base.tf index 6e53975ffc9..d9f4d06dc07 100644 --- a/data/data/aws/route53/base.tf +++ b/data/data/aws/route53/base.tf @@ -1,21 +1,14 @@ -locals { - public_endpoints_count = "${var.public_endpoints ? 1 : 0}" - private_endpoints_count = "${var.private_endpoints ? 1 : 0}" -} - data "aws_route53_zone" "base" { name = "${var.base_domain}" } locals { - public_zone_id = "${join("", data.aws_route53_zone.base.*.zone_id)}" + public_zone_id = "${data.aws_route53_zone.base.zone_id}" - zone_id = "${var.private_endpoints ? var.private_zone_id : local.public_zone_id}" + zone_id = "${var.private_zone_id}" } resource "aws_route53_record" "api_external" { - count = "${var.elb_alias_enabled ? local.public_endpoints_count : 0}" - zone_id = "${local.public_zone_id}" name = "${var.cluster_name}-api.${var.base_domain}" type = "A" @@ -28,8 +21,6 @@ resource "aws_route53_record" "api_external" { } resource "aws_route53_record" "api_internal" { - count = "${var.elb_alias_enabled ? local.private_endpoints_count : 0}" - zone_id = "${var.private_zone_id}" name = "${var.cluster_name}-api.${var.base_domain}" type = "A" diff --git a/data/data/aws/route53/master.tf b/data/data/aws/route53/master.tf deleted file mode 100644 index 0d0d3b880e1..00000000000 --- a/data/data/aws/route53/master.tf +++ /dev/null @@ -1,8 +0,0 @@ -resource "aws_route53_record" "master_nodes" { - count = "${var.elb_alias_enabled ? 0 : var.master_count}" - zone_id = "${data.aws_route53_zone.base.zone_id}" - name = "${var.cluster_name}-master-${count.index}" - type = "A" - ttl = "60" - records = ["${var.master_ip_addresses[count.index]}"] -} diff --git a/data/data/aws/route53/variables.tf b/data/data/aws/route53/variables.tf index 65a1b8a1417..53a7623d155 100644 --- a/data/data/aws/route53/variables.tf +++ b/data/data/aws/route53/variables.tf @@ -50,30 +50,6 @@ variable "extra_tags" { // AWS specific internal zone variables -variable "elb_alias_enabled" { - description = <