Skip to content

This project will help get a VMWare VCF management domain up and running quickly on Equinix Metal

License

Notifications You must be signed in to change notification settings

equinix-labs/terraform-equinix-metal-vcf

Repository files navigation

terraform-vcf-metal-deployment

This Terraform module deploys a VMware Cloud Foundation (VCF) environment on Equinix Metal.

Requirements

Name Version
terraform >= 1.5
equinix >= 1.35
random >= 3

Providers

Name Version
equinix >= 1.35
random >= 3

Modules

Name Source Version
metal_vrf ./modules/metal_vrf_w_interconnection_service_tokens n/a
metal_vrf_gateways_w_dynamic_neighbor ./modules/metal_vrf_gateway_w_dynamic_neighbor n/a
ssh ./modules/ssh/ n/a
vcf_metal_devices ./modules/vcf_metal_device n/a

Resources

Name Type
equinix_metal_device.bastion resource
equinix_metal_device.management resource
equinix_metal_port.bastion_bond0 resource
equinix_metal_port.management_bond0 resource
random_password.management resource

Inputs

Name Description Type Default Required
equinix_client_id Client ID for Equinix Fabric API interaction https://developer.equinix.com/docs?page=/dev-docs/fabric/overview string n/a yes
equinix_client_secret Client Secret for Equinix Fabric API interaction https://developer.equinix.com/docs?page=/dev-docs/fabric/overview string n/a yes
esxi_devices Map containing individual ESXi device details for each Metal Instance
map(object({
name = string # Short form hostname of system (vcf-ems-deployment-parameter.xlsx > Hosts and Networks Sheet > I6:L6)
mgmt_ip = string # Management Network IP address for VMK0 (vcf-ems-deployment-parameter.xlsx > Hosts and Networks Sheet > I7:L7)
reservation_id = optional(string, "") # Hardware reservation IDs to use for the VCF nodes. Each item can be a reservation UUID or next-available.
}))
n/a yes
esxi_dns_server DNS Server to be configured in ESXi (vcf-ems-deployment-parameter.xlsx > Deploy Parameters Sheet > F6:G6) string n/a yes
esxi_domain Domain Name to be configured in ESXi FQDN along with name in Map above (vcf-ems-deployment-parameter.xlsx > Deploy Parameters Sheet > J6:K6) string n/a yes
esxi_management_gateway Management Network Gateway for ESXi default TCP/IP Stack (vcf-ems-deployment-parameter.xlsx > Hosts and Networks Sheet > F8) string n/a yes
esxi_management_subnet Management Network Subnet Mask for VMK0 (vcf-ems-deployment-parameter.xlsx > Hosts and Networks Sheet > E8) string n/a yes
esxi_mgmt_vlan VLAN ID of Management VLAN for ESXi Management Network portgroup/VMK0 (vcf-ems-deployment-parameter.xlsx > Hosts and Networks Sheet > C8) string n/a yes
esxi_network_space Overall Network space for the VCF project string n/a yes
esxi_ntp_server NTP Server to be configured in ESXi (vcf-ems-deployment-parameter.xlsx > Deploy Parameters Sheet > F8:G8) string n/a yes
esxi_password mkpasswd Pre-hashed root password to be set for ESXi instances (Hash the password from vcf-ems-deployment-parameter.xlsx > Credentials Sheet > C8 using 'mkpasswd --method=SHA-512' from Linux whois package) string n/a yes
esxi_plan Slug for target hardware plan type. The only officially supported server plan for ESXi/VCF is the 'n3.xlarge.opt-m4s2' https://deploy.equinix.com/product/servers/n3-xlarge-opt-m4s2/ string n/a yes
esxi_version_slug Slug for ESXi OS version to be deployed on Metal Instances https://github.com/equinixmetal-images/changelog/blob/main/vmware-esxi/x86_64/8.md string n/a yes
metal_auth_token API Token for Equinix Metal API interaction https://deploy.equinix.com/developers/docs/metal/identity-access-management/api-keys/ string n/a yes
metal_project_id Equinix Metal Project UUID, can be found in the General Tab of the Organization Settings https://deploy.equinix.com/developers/docs/metal/identity-access-management/organizations/#organization-settings-and-roles string n/a yes
metal_vrf_asn ASN to be used for Metal VRF https://deploy.equinix.com/developers/docs/metal/networking/vrf/ string n/a yes
metro Equinix Metal Metro where Metal resources are going to be deployed https://deploy.equinix.com/developers/docs/metal/locations/metros/#metros-quick-reference string n/a yes
vcf_vrf_networks Map of Objects representing configuration specifics for various network segments required for VCF Management and Underlay Networking
map(object({
vlan_id = string # (vcf-ems-deployment-parameter.xlsx > Hosts and Networks Sheet > C7:C10) 802.1q VLAN number
vlan_name = string # (vcf-ems-deployment-parameter.xlsx > Hosts and Networks Sheet > D7:D10) Preferred Description of Metal VLAN
subnet = string # (vcf-ems-deployment-parameter.xlsx > Hosts and Networks Sheet > E7:E10) CIDR Subnet to be used within this Metal VLAN
enable_dyn_nei = optional(bool, false) # Whether or not to configure BGP Dynamic Neighbor functionality on the gateway, only use for NSX-t Edge uplink VLANs if NSX-t will peer with Metal VRF
dyn_nei_range = optional(string, "") # CIDR Range of IPs that the Metal VRF should expect BGP Peering from
dyn_nei_asn = optional(string, "") # ASN that the Metal VRF should expect BGP Peering from
}))
n/a yes
vrf_bgp_customer_peer_ip_pri IP of BGP Neighbor on Primary Interconnection that Metal VRF should expect to peer with string n/a yes
vrf_bgp_customer_peer_ip_sec IP of BGP Neighbor on Secondary Interconnection that Metal VRF should expect to peer with string n/a yes
vrf_bgp_md5_pri MD5 Shared Password for BGP session authentication string n/a yes
vrf_bgp_md5_sec MD5 Shared Password for BGP session authentication string n/a yes
vrf_bgp_metal_peer_ip_pri IP of Metal VRF on Primary Interconnection for peering with BGP Neighbor string n/a yes
vrf_bgp_metal_peer_ip_sec IP of Metal VRF on Secondary Interconnection for peering with BGP Neighbor string n/a yes
vrf_peer_asn ASN that will establish BGP Peering with the Metal VRF across the interconnections string n/a yes
vrf_peer_subnet Subnet used for both Metal VRF interconnections (/29 or larger) string n/a yes
vrf_peer_subnet_pri Subnet used for point to point Metal VRF BGP Neighbor connection across the Primary interconnection string n/a yes
vrf_peer_subnet_sec Subnet used for point to point Metal VRF BGP Neighbor connection across the Secondary interconnection string n/a yes
bastion_plan Which plan to use for the ubuntu based bastion host. string "m3.small.x86" no
management_plan Which plan to use for the windows management host. string "m3.small.x86" no

Outputs

Name Description
bastion_public_ip The public IP address of the bastion host.
management_password Randomly generated password used for the Admin accounts on the management host.
management_public_ip The public IP address of the windows management host.
next_steps Instructions for accessing the management host.
ssh_private_key SSH Private key to use to connect to bastion and management hosts over SSH.

About

This project will help get a VMWare VCF management domain up and running quickly on Equinix Metal

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published