This module deploys a Multizone Region (MZR) VPC in IBM Cloud with the following characteristics:
Ability to deploy a VPC with custom address prefixes
Ability to deploy a VPC with public gateways in any of the three zones
Ability to deploy a subnet in each regional zone
Name
Description
Type
Default
Required
address_prefix
The address prefix to use if address_prefix_management is set to manual. This will be split in to three prefixes, one for each zone.
string
"172.16.0.0/16"
no
classic_access
Indicates if the VPC will have Classic Access.
bool
false
no
owner_tag
The owner tag to assign to all resources.
string
n/a
yes
project_prefix
Prefix to assign to all deployed resources. If not provided a random string will be generated.
string
""
no
region
The IBM Cloud region where the VPC and related resources will be deployed.
string
n/a
yes
resource_group_id
The ID of the resource group to use for deployed resources.
string
n/a
yes
tags
Tags to assign to all resources.
list(string)
[]
no
use_custom_prefix
Indicates if custom address prefixes will be used.
bool
false
no
use_public_gateways
Create a public gateway in any of the three zones set to true
.
object({ zone-1 = optional(bool) zone-2 = optional(bool) zone-3 = optional(bool) })
{ "zone-1": true, "zone-2": false, "zone-3": false }
no
Example usage of the module
This example shows how to deploy a VPC with public gateways in zones 1 and 2. Additionally as no project prefix
is provided, a random string will be generated.
terraform {
required_providers {
ibm = {
source = " IBM-Cloud/ibm"
version = " 1.70.1"
}
}
}
provider "ibm" {
ibmcloud_api_key = var. ibmcloud_api_key
region = var. ibmcloud_region
}
module "resource_group" {
source = " terraform-ibm-modules/resource-group/ibm"
version = " 1.1.5"
resource_group_name = var. existing_resource_group == null ? " ${ var . prefix } -resource-group" : null
existing_resource_group_name = var. existing_resource_group
}
module "default_vpc" {
source = " git::https://github.com/cloud-design-dev/dts-mzr-vpc.git"
existing_resource_group = module. resource_group . resource_group_id
region = var. region
owner_tag = " supercooldev"
use_public_gateways = {
zone-1 = true
zone-2 = true
zone-3 = false
}
}
This example shows how to deploy a VPC with custom address prefixes and a project prefix. Additionally, public gateways are not created in any of the zones.
terraform {
required_providers {
ibm = {
source = " IBM-Cloud/ibm"
version = " 1.70.1"
}
}
}
provider "ibm" {
ibmcloud_api_key = var. ibmcloud_api_key
region = var. ibmcloud_region
}
module "resource_group" {
source = " terraform-ibm-modules/resource-group/ibm"
version = " 1.1.5"
resource_group_name = var. existing_resource_group == null ? " ${ var . prefix } -resource-group" : null
existing_resource_group_name = var. existing_resource_group
}
module "custom_vpc" {
source = " git::https://github.com/cloud-design-dev/dts-mzr-vpc.git"
existing_resource_group = var. existing_resource_group
region = var. region
project_prefix = " custom"
owner_tag = " supercooldev"
use_custom_prefix = true
address_prefix = " 192.168.50.0/18"
use_public_gateways = {
zone-1 = false
zone-2 = false
zone-3 = false
}
}