|
1 | 1 | ##############################################################################
|
2 |
| -# ROKS Landing zone |
| 2 | +locals { |
| 3 | + cluster_name = var.existing_cluster_name != null ? var.existing_cluster_name : module.ocp_base[0].cluster_name |
| 4 | + cluster_rg_id = var.existing_cluster_rg_id != null ? var.existing_cluster_rg_id : module.resource_group[0].resource_group_id |
| 5 | +} |
| 6 | +############################################################################### |
| 7 | + |
| 8 | +############################################################################## |
| 9 | +# Resource Group |
3 | 10 | ##############################################################################
|
4 | 11 |
|
5 |
| -module "roks_landing_zone" { |
6 |
| - source = "git::https://github.com/terraform-ibm-modules/terraform-ibm-landing-zone.git//patterns/roks-quickstart?ref=v6.6.1" |
7 |
| - ibmcloud_api_key = var.ibmcloud_api_key |
8 |
| - prefix = var.prefix |
9 |
| - region = var.region |
10 |
| - resource_tags = var.resource_tags |
| 12 | +module "resource_group" { |
| 13 | + count = var.existing_cluster_rg_id == null ? 1 : 0 |
| 14 | + source = "terraform-ibm-modules/resource-group/ibm" |
| 15 | + version = "1.1.6" |
| 16 | + # if an existing resource group is not set (null) create a new one using prefix |
| 17 | + resource_group_name = "${var.prefix}-resource-group" |
| 18 | +} |
| 19 | + |
| 20 | +######################################################################################################################## |
| 21 | +# VPC + Subnet + Public Gateway |
| 22 | +# |
| 23 | +# NOTE: This is a very simple VPC with single subnet in a single zone with a public gateway enabled, that will allow |
| 24 | +# all traffic ingress/egress by default. |
| 25 | +# For production use cases this would need to be enhanced by adding more subnets and zones for resiliency, and |
| 26 | +# ACLs/Security Groups for network security. |
| 27 | +######################################################################################################################## |
| 28 | + |
| 29 | +resource "ibm_is_vpc" "vpc" { |
| 30 | + name = "${var.prefix}-vpc" |
| 31 | + resource_group = local.cluster_rg_id |
| 32 | + address_prefix_management = "auto" |
| 33 | + tags = var.resource_tags |
| 34 | +} |
| 35 | + |
| 36 | +resource "ibm_is_public_gateway" "gateway" { |
| 37 | + name = "${var.prefix}-gateway-1" |
| 38 | + vpc = ibm_is_vpc.vpc.id |
| 39 | + resource_group = local.cluster_rg_id |
| 40 | + zone = "${var.region}-1" |
| 41 | +} |
| 42 | + |
| 43 | +resource "ibm_is_subnet" "subnet_zone_1" { |
| 44 | + name = "${var.prefix}-subnet-1" |
| 45 | + vpc = ibm_is_vpc.vpc.id |
| 46 | + resource_group = local.cluster_rg_id |
| 47 | + zone = "${var.region}-1" |
| 48 | + total_ipv4_address_count = 256 |
| 49 | + public_gateway = ibm_is_public_gateway.gateway.id |
| 50 | +} |
| 51 | + |
| 52 | +######################################################################################################################## |
| 53 | +# OCP VPC cluster (single zone) |
| 54 | +######################################################################################################################## |
| 55 | + |
| 56 | +locals { |
| 57 | + cluster_vpc_subnets = { |
| 58 | + default = [ |
| 59 | + { |
| 60 | + id = ibm_is_subnet.subnet_zone_1.id |
| 61 | + cidr_block = ibm_is_subnet.subnet_zone_1.ipv4_cidr_block |
| 62 | + zone = ibm_is_subnet.subnet_zone_1.zone |
| 63 | + } |
| 64 | + ] |
| 65 | + } |
| 66 | + |
| 67 | + worker_pools = [ |
| 68 | + { |
| 69 | + subnet_prefix = "default" |
| 70 | + pool_name = "default" # ibm_container_vpc_cluster automatically names default pool "default" (See https://github.com/IBM-Cloud/terraform-provider-ibm/issues/2849) |
| 71 | + machine_type = "bx2.16x64" |
| 72 | + operating_system = "REDHAT_8_64" |
| 73 | + workers_per_zone = 3 # minimum of 2 is allowed when using single zone |
| 74 | + } |
| 75 | + ] |
| 76 | +} |
| 77 | + |
| 78 | +module "ocp_base" { |
| 79 | + count = var.existing_cluster_name == null ? 1 : 0 |
| 80 | + source = "terraform-ibm-modules/base-ocp-vpc/ibm" |
| 81 | + version = "3.41.7" |
| 82 | + resource_group_id = local.cluster_rg_id |
| 83 | + region = var.region |
| 84 | + tags = var.resource_tags |
| 85 | + cluster_name = var.prefix |
| 86 | + force_delete_storage = true |
| 87 | + vpc_id = ibm_is_vpc.vpc.id |
| 88 | + vpc_subnets = local.cluster_vpc_subnets |
| 89 | + worker_pools = local.worker_pools |
| 90 | + disable_outbound_traffic_protection = true # set as True to enable outbound traffic |
11 | 91 | }
|
12 | 92 |
|
13 | 93 | ##############################################################################
|
14 | 94 | # Deploy cloudpak_data
|
15 | 95 | ##############################################################################
|
| 96 | + |
16 | 97 | module "cloudpak_data" {
|
17 | 98 | source = "../../solutions/deploy"
|
18 | 99 | ibmcloud_api_key = var.ibmcloud_api_key
|
19 | 100 | prefix = var.prefix
|
20 | 101 | region = var.region
|
21 |
| - cluster_name = module.roks_landing_zone.workload_cluster_id |
| 102 | + cluster_name = local.cluster_name |
| 103 | + cluster_rg_id = local.cluster_rg_id |
22 | 104 | cloud_pak_deployer_image = "quay.io/cloud-pak-deployer/cloud-pak-deployer"
|
23 | 105 | cpd_admin_password = "Passw0rd" #pragma: allowlist secret
|
24 | 106 | cpd_entitlement_key = "entitlementKey"
|
|
0 commit comments