| 
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.8.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