diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 4d4e74d..8a87dfe 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -60,7 +60,7 @@ jobs: ssh-add <(echo $METAL_SSH_PRIVATE_KEY_BASE64 | base64 -d) # Arrays of strings are hard to define via TF env vars (in yaml) - run: | - echo 'metal_facilities = ["da11"]' > terraform.tfvars + echo 'metal_metro = "da"' > terraform.tfvars echo 'metal_project_id = "${{ steps.project.outputs.projectID }}"' >> terraform.tfvars - name: Terraform Plan id: plan diff --git a/.terraform.lock.hcl b/.terraform.lock.hcl deleted file mode 100755 index 8131f46..0000000 --- a/.terraform.lock.hcl +++ /dev/null @@ -1,106 +0,0 @@ -# This file is maintained automatically by "terraform init". -# Manual edits may be lost in future updates. - -provider "registry.terraform.io/equinix/metal" { - version = "1.0.0" - constraints = "1.0.0" - hashes = [ - "h1:nUIvAmwG1AIo5FCrqiNoB9oWHjRs5K6YTwr2T3iIEkY=", - "zh:06bf3f257e490891a9470e6b559d27b4136c2a699d05eb5690cad5fec98d7d4d", - "zh:0d1312af7461a3ee6def3f91e82ac0b06c66667423c459791cf52dda75527428", - "zh:0d866ece81ff174d5a25890ed18672e15a5ddd88834335289b62541690076ab8", - "zh:0fb605b2271883a8a76d330ca479687f8ee001f47594ff289f7aeb9df4d2265a", - "zh:2f5f6f582bd11a24cca99fbde1da31999dd8c3d1117f17ee2d5f9eb048e02100", - "zh:3d12c99b463f732eb5f4a81f38b6eeba4314892669f4ce3ced8d91cd2b9209a3", - "zh:6045a87e5b74c90fbe07352aedab1ec3175c421b36caebeaacc1f7446bede27c", - "zh:6528716f0fdd24b4eada6ca5b526f12f19bdf987e998abc2ec5942d59986be6a", - "zh:7bc75f9b60928d8b843e4342b069724e224ff051c54e606efaa1b080d25e8f6e", - "zh:b530619842716e48342fc79b04b2b261c89bc26019c9bac4993ea532b17b3b89", - "zh:c3321a23259cbdb0488a0450a85197db4a467776287e96cf67c5731d9f83c58e", - ] -} - -provider "registry.terraform.io/hashicorp/local" { - version = "2.0.0" - hashes = [ - "h1:pO1ANXtOCRfecKsY9Hn4UsXoPBLv6LFiDIEiS1MZ09E=", - "zh:34ce8b79493ace8333d094752b579ccc907fa9392a2c1d6933a6c95d0786d3f1", - "zh:5c5a19c4f614a4ffb68bae0b0563f3860115cf7539b8adc21108324cfdc10092", - "zh:67ddb1ca2cd3e1a8f948302597ceb967f19d2eeb2d125303493667388fe6330e", - "zh:68e6b16f3a8e180fcba1a99754118deb2d82331b51f6cca39f04518339bfdfa6", - "zh:8393a12eb11598b2799d51c9b0a922a3d9fadda5a626b94a1b4914086d53120e", - "zh:90daea4b2010a86f2aca1e3a9590e0b3ddcab229c2bd3685fae76a832e9e836f", - "zh:99308edc734a0ac9149b44f8e316ca879b2670a1cae387a8ae754c180b57cdb4", - "zh:c76594db07a9d1a73372a073888b672df64adb455d483c2426cc220eda7e092e", - "zh:dc09c1fb36c6a706bdac96cce338952888c8423978426a09f5df93031aa88b84", - "zh:deda88134e9780319e8de91b3745520be48ead6ec38cb662694d09185c3dac70", - ] -} - -provider "registry.terraform.io/hashicorp/null" { - version = "3.0.0" - hashes = [ - "h1:V1tzrSG6t3e7zWvUwRbGbhsWU2Jd/anrJpOl9XM+R/8=", - "zh:05fb7eab469324c97e9b73a61d2ece6f91de4e9b493e573bfeda0f2077bc3a4c", - "zh:1688aa91885a395c4ae67636d411475d0b831e422e005dcf02eedacaafac3bb4", - "zh:24a0b1292e3a474f57c483a7a4512d797e041bc9c2fbaac42fe12e86a7fb5a3c", - "zh:2fc951bd0d1b9b23427acc93be09b6909d72871e464088171da60fbee4fdde03", - "zh:6db825759425599a326385a68acc6be2d9ba0d7d6ef587191d0cdc6daef9ac63", - "zh:85985763d02618993c32c294072cc6ec51f1692b803cb506fcfedca9d40eaec9", - "zh:a53186599c57058be1509f904da512342cfdc5d808efdaf02dec15f0f3cb039a", - "zh:c2e07b49b6efa676bdc7b00c06333ea1792a983a5720f9e2233db27323d2707c", - "zh:cdc8fe1096103cf5374751e2e8408ec4abd2eb67d5a1c5151fe2c7ecfd525bef", - "zh:dbdef21df0c012b0d08776f3d4f34eb0f2f229adfde07ff252a119e52c0f65b7", - ] -} - -provider "registry.terraform.io/hashicorp/random" { - version = "3.0.0" - hashes = [ - "h1:yhHJpb4IfQQfuio7qjUXuUFTU/s+ensuEpm23A+VWz0=", - "zh:0fcb00ff8b87dcac1b0ee10831e47e0203a6c46aafd76cb140ba2bab81f02c6b", - "zh:123c984c0e04bad910c421028d18aa2ca4af25a153264aef747521f4e7c36a17", - "zh:287443bc6fd7fa9a4341dec235589293cbcc6e467a042ae225fd5d161e4e68dc", - "zh:2c1be5596dd3cca4859466885eaedf0345c8e7628503872610629e275d71b0d2", - "zh:684a2ef6f415287944a3d966c4c8cee82c20e393e096e2f7cdcb4b2528407f6b", - "zh:7625ccbc6ff17c2d5360ff2af7f9261c3f213765642dcd84e84ae02a3768fd51", - "zh:9a60811ab9e6a5bfa6352fbb943bb530acb6198282a49373283a8fa3aa2b43fc", - "zh:c73e0eaeea6c65b1cf5098b101d51a2789b054201ce7986a6d206a9e2dacaefd", - "zh:e8f9ed41ac83dbe407de9f0206ef1148204a0d51ba240318af801ffb3ee5f578", - "zh:fbdd0684e62563d3ac33425b0ac9439d543a3942465f4b26582bcfabcb149515", - ] -} - -provider "registry.terraform.io/hashicorp/template" { - version = "2.2.0" - hashes = [ - "h1:0wlehNaxBX7GJQnPfQwTNvvAf38Jm0Nv7ssKGMaG6Og=", - "zh:01702196f0a0492ec07917db7aaa595843d8f171dc195f4c988d2ffca2a06386", - "zh:09aae3da826ba3d7df69efeb25d146a1de0d03e951d35019a0f80e4f58c89b53", - "zh:09ba83c0625b6fe0a954da6fbd0c355ac0b7f07f86c91a2a97849140fea49603", - "zh:0e3a6c8e16f17f19010accd0844187d524580d9fdb0731f675ffcf4afba03d16", - "zh:45f2c594b6f2f34ea663704cc72048b212fe7d16fb4cfd959365fa997228a776", - "zh:77ea3e5a0446784d77114b5e851c970a3dde1e08fa6de38210b8385d7605d451", - "zh:8a154388f3708e3df5a69122a23bdfaf760a523788a5081976b3d5616f7d30ae", - "zh:992843002f2db5a11e626b3fc23dc0c87ad3729b3b3cff08e32ffb3df97edbde", - "zh:ad906f4cebd3ec5e43d5cd6dc8f4c5c9cc3b33d2243c89c5fc18f97f7277b51d", - "zh:c979425ddb256511137ecd093e23283234da0154b7fa8b21c2687182d9aea8b2", - ] -} - -provider "registry.terraform.io/hashicorp/tls" { - version = "3.0.0" - hashes = [ - "h1:AcQGOAD5xa4KE9gYw5g7R6UU8a77Yn/afPvch4N86lQ=", - "zh:05eac573a1fe53227bcc6b01daf6ddf0b73456f97f56f316f1b3114a4771e175", - "zh:09390dad764c76f0fd59cae4dad296e3e39487e06de3a4bc0df73916c6bb2f17", - "zh:142d0bc4722ab088b7ca124b0eb44206b9d100f51035c162d50ef552e09813d0", - "zh:2c391743dd20f43329c0d0d49dec7827970d788115593c0e32a57050c0a85337", - "zh:525b12fc87369c0e6d347afe6c77668aebf56cfa078bb0f1f01cc2ee01ac7016", - "zh:5583d81b7a05c6d49a4c445e1ee62e82facb07bb9204998a836b7b522a51db8d", - "zh:925e3acc70e18ed1cd296d337fc3e0ca43ac6f5bf2e660f24de750c7754f91aa", - "zh:a291457d25b207fd28fb4fad9209ebb591e25cfc507ca1cb0fb8b2e255be1969", - "zh:bbf9e2718752aebfbd7c6b8e196eb2e52730b66befed2ea1954f9ff1c199295e", - "zh:f4b333c467ae02c1a238ac57465fe66405f6e2a6cfeb4eded9bc321c5652a1bf", - ] -} diff --git a/BareMetal.tf b/BareMetal.tf index 9d1c0c8..f1d1fbc 100644 --- a/BareMetal.tf +++ b/BareMetal.tf @@ -48,6 +48,7 @@ resource "equinix_metal_device" "controller" { private_key = local_file.cluster_private_key_pem.content } user_data = "#cloud-config\n\nssh_authorized_keys:\n - \"${local_file.cluster_public_key.content}\"" + metro = var.metal_metro project_id = local.metal_project_id billing_cycle = "hourly" # ip_address { @@ -68,8 +69,8 @@ resource "equinix_metal_device" "dashboard" { user = "root" private_key = file(local_file.cluster_private_key_pem) } - user_data = "#cloud-config\n\nssh_authorized_keys:\n - \"${local_file.cluster_public_key.content}\"" - + user_data = "#cloud-config\n\nssh_authorized_keys:\n - \"${local_file.cluster_public_key.content}\"" + metro = var.metal_metro project_id = local.metal_project_id billing_cycle = "hourly" } @@ -89,6 +90,7 @@ resource "equinix_metal_device" "compute-x86" { private_key = file(local_file.cluster_private_key_pem) } user_data = "#cloud-config\n\nssh_authorized_keys:\n - \"${local_file.cluster_public_key.content}\"" + metro = var.metal_metro project_id = local.metal_project_id billing_cycle = "hourly" } @@ -108,6 +110,7 @@ resource "equinix_metal_device" "compute-arm" { private_key = file(local_file.cluster_private_key_pem) } user_data = "#cloud-config\n\nssh_authorized_keys:\n - \"${local_file.cluster_public_key.content}\"" + metro = var.metal_metro project_id = local.metal_project_id billing_cycle = "hourly" } diff --git a/DNS.tf b/DNS.tf index 4c52e1d..e09c61f 100644 --- a/DNS.tf +++ b/DNS.tf @@ -16,7 +16,7 @@ # # domain = "openstacksandiego.us" # name = "controller-${random_id.cloud.hex}" -# value = "${metal_device.dashboard.access_public_ipv4}" +# value = "${equinix_metal_device.dashboard.access_public_ipv4}" # type = "A" # ttl = 3600 #} @@ -26,7 +26,7 @@ # # domain = "openstacksandiego.us" # name = "dashboard-${random_id.cloud.hex}" -# value = "${metal_device.dashboard.access_public_ipv4}" +# value = "${equinix_metal_device.dashboard.access_public_ipv4}" # type = "A" # ttl = 3600 #} diff --git a/OWNERS.md b/OWNERS.md index ea79461..d564d77 100644 --- a/OWNERS.md +++ b/OWNERS.md @@ -4,4 +4,4 @@ This project is governed by [Equinix](https://metal.equinix.com) and benefits fr Members of the Equinix Github organization will strive to triage issues in a timely manner. -See the [packethost/standards glossary](https://github.com/packethost/standards/blob/master/glossary.md#ownersmd) for more details about this file. +See the [equinix-labs/equinix-labs glossary](https://github.com/equinix-labs/equinix-labs/blob/main/glossary.md#ownersmd) for more details about this file. diff --git a/ProviderNetwork.tf b/ProviderNetwork.tf index ab7a37b..c356c20 100644 --- a/ProviderNetwork.tf +++ b/ProviderNetwork.tf @@ -4,7 +4,7 @@ # use private IPv4 addresses to save precious Internet resources data "equinix_metal_precreated_ip_block" "private_ipv4" { - + metro = equinix_metal_device.controller.metro project_id = local.metal_project_id address_family = 4 public = false @@ -21,7 +21,7 @@ resource "equinix_metal_ip_attachment" "controller_private_ipv4" { # ipv6 is free so let's go crazy data "equinix_metal_precreated_ip_block" "public_ipv6" { - + metro = equinix_metal_device.controller.metro project_id = local.metal_project_id address_family = 6 public = true diff --git a/README.md b/README.md index 9e2cf09..136bd75 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ -![](https://img.shields.io/badge/Stability-Experimental-red.svg) - # OpenStack on Equinix Metal -This repository is [Experimental](https://github.com/packethost/standards/blob/master/experimental-statement.md) meaning that it's based on untested ideas or techniques and not yet established or finalized or involves a radically new and innovative style! This means that support is best effort (at best!) and we strongly encourage you to NOT use this in production. +![Experimental](https://img.shields.io/badge/Stability-Experimental-red.svg) +[![integration](https://github.com/equinix/terraform-metal-openstack/actions/workflows/integration.yml/badge.svg)](https://github.com/equinix/terraform-metal-openstack/actions/workflows/integration.yml) + +This repository is [Experimental](https://github.com/equinix-labs/equinix-labs/blob/main/experimental-statement.md) meaning that it's based on untested ideas or techniques and not yet established or finalized or involves a radically new and innovative style! This means that support is best effort (at best!) and we strongly encourage you to NOT use this in production. ## Overview @@ -15,7 +16,7 @@ The deployment defaults to a minimum 3 node OpenStack cloud, consisting of 2 x86 - It is possible to modify the total number of nodes and the type (various sizes of x86 and ARM hardware provided by Equinix Metal). - By default, the template uses third generation Equinix Metal hardware. -If you require support, please email [metal@equinix.com](mailto:metal@equinix.com), visit the Equinix Metal IRC channel (#equinixmetal on freenode), subscribe to the [Equinix Metal Community Slack channel](https://slack.equinixmetal.com) or post an issue within this repository. +If you require support, please email [metal@equinix.com](mailto:metal@equinix.com), subscribe to the [Equinix Metal Community Slack channel](https://slack.equinixmetal.com) or post an issue within this repository. Contributions are welcome to help extend this work! @@ -43,7 +44,7 @@ We recommend setting the Equinix Metal API Token and Organization ID as environm ```bash export TF_VAR_metal_organization_id=YOUR_ORGANIZATION_ID_HERE -export TF_VAR_metal_auth_token=YOUR_PACKET_TOKEN_HERE +export TF_VAR_metal_auth_token=YOUR_METAL_TOKEN_HERE ``` #### Where is my Equinix Metal Organization ID? @@ -67,7 +68,7 @@ When provisioning the machines, Equinix Metal will preset an SSH key to allow ad ### Terraform These instructions use Terraform from Hashicorp to drive the deployment. If you don't have Terraform installed already, you can download and install Terraform using the instructions on the link below: -https://www.terraform.io/downloads.html + ## Deployment Prep @@ -84,7 +85,7 @@ Download the Terraform providers required: terraform init ``` -An SSH keypair will be created and managed by this plan to access the hosts in your Metal account's project. +An SSH keypair will be created and managed by this plan to access the hosts in your Metal account's project. ## Cloud Sizing Defaults @@ -93,9 +94,8 @@ Several configurations files are available each building the cloud with a differ | Filename | Description | Controller | Dashboard | x86 Compute Nodes | ARM Compute Nodes | | :--------------------------- | :---------------------- | :------------ | :------------ | :---------------- | :---------------- | | default | Minimal Config | c3.medium.x86 | c3.medium.x86 | c3.medium.x86 | none | -| sample.terraform.tfvars | ARM & x86 compute | c2.medium.x86 | c2.medium.x86 | n2.xlarge.x86 | c2.large.arm | -| sample-arm.terraform.tfvars | Equinix Metal Gen 2 ARM | c2.large.arm | c2.large.arm | none | c2.large.arm | -| sample-gen2.terraform.tfvars | Equinix Metal Gen 2 x86 | c2.medium.x86 | c2.medium.x86 | n2.xlarge.x86 | none | +| sample.terraform.tfvars | ARM & x86 compute | c3.medium.x86 | c3.medium.x86 | n3.xlarge.x86 | c3.large.arm64 | +| sample-arm.terraform.tfvars | Equinix Metal Gen 3 ARM | c3.large.arm64 | c3.large.arm64 | none | c3.large.arm64 | | sample-gen3.terraform.tfvars | Equinix Metal Gen 3 x86 | c3.medium.x86 | c3.medium.x86 | s3.xlarge.x86 | none | Running without a "terraform.tfvars" will result in the "default" configuration using Equinix Metal c3.medium.x86 hardware devices @@ -135,25 +135,25 @@ terraform output Sample output as follows: -``` +```ini Cloud_ID_Tag = "5077f6895d12fce0" Compute_ARM_IPs = [ "139.178.89.34", ] Compute_ARM_Type = [ - "c2.large.arm", + "c3.large.arm64", ] Compute_x86_IPs = [ "147.75.70.59", ] Compute_x86_Type = [ - "n2.xlarge.x86", + "n3.xlarge.x86", ] Controller_Provider_Private_IPv4 = "10.88.70.16/28" Controller_Provider_Public_IPv6 = "2604:1380:1000:7c01::/64" Controller_SSH = "ssh root@147.75.70.123 -i metal-key" Controller_SSH6 = "ssh root@2604:1380:1000:7c00::7 -i metal-key" -Controller_Type = "c2.medium.x86" +Controller_Type = "c3.medium.x86" Horizon_dashboard_via_IP = "http://147.75.109.135/horizon/ default/admin/GgT0VzyrX6Jm9Hd9" Horizon_dashboard_via_IP6 = "http://[2604:1380:1000:7c00::3]/horizon/ default/admin/GgT0VzyrX6Jm9Hd9" OpenStack_API_Endpoint = "http://147.75.70.123:5000/v3" @@ -168,7 +168,7 @@ The OpenStack Controller (CLI) can be accessed at the SSH address listed with th This deployment includes the following additional items in addition atop of the OpenStack installation. This includes a set of virtual machine images (Cirros, CentOS, Fedora, Ubuntu), a virtual network and some running virtual machines. For more information on the deployed workloads, please see: -https://github.com/equinix/terraform-metal-openstack/blob/master/OpenStackSampleWorkload.tf + ## Validation @@ -185,7 +185,7 @@ source admin-openrc - Validate that all the OpenStack compute services are running. There will be one nova-compute per bare metal compute node provisioned (ARM or x86). - Horizon: Admin->System Information->Compute Services -``` +```sh root@controller:~# openstack compute service list +----+----------------+----------------+----------+---------+-------+----------------------------+ | ID | Binary | Host | Zone | Status | State | Updated At | @@ -199,7 +199,7 @@ root@controller:~# openstack compute service list - Validate that all the images have been installed - Horizon: Admin->Compute->Images -``` +```sh root@controller:~# openstack image list +--------------------------------------+-----------------+--------+ | ID | Name | Status | @@ -219,7 +219,7 @@ root@controller:~# openstack image list - Validate that all the x86 compute node has the appropriate number of vCPUs and memory -``` +```sh root@controller:~# openstack hypervisor show compute-x86-00 -f table -c service_host -c vcpus -c memory_mb -c running_vms +--------------+----------------+ | Field | Value | @@ -234,7 +234,7 @@ root@controller:~# openstack hypervisor show compute-x86-00 -f table -c service_ - Validate that all the virtual machines are running - Horizon: Admin->Compute->Instances -``` +```sh root@controller:~# openstack server list +--------------------------------------+------+--------+---------------------------+---------------+-----------+ | ID | Name | Status | Networks | Image | Flavor | @@ -245,72 +245,38 @@ root@controller:~# openstack server list ## External Networking Support -External (Provider) networking allows VMs to be assigned Internet addressable floating IPs. This allows the VMs to offer Internet accessible services (i.e. SSH and HTTP). This requires the a block of IP addresses from Equinix Metal (elastic IP address). These can be requested through the Equinix Metal Web GUI. Please see https://www.packet.com/developers/docs/network/basic/elastic-ips/ for more details. Public IPv4 of at least /29 is recommended. A /30 will provide only a single floating IP. A /29 allocation will provide 5 floating IPs. +External (Provider) networking allows VMs to be assigned Internet addressable floating IPs. This allows the VMs to offer Internet accessible services (i.e. SSH and HTTP). This requires the a block of IP addresses from Equinix Metal (elastic IP address). These can be requested through the Equinix Metal Web GUI. Please see for more details. Public IPv4 of at least /29 is recommended. A /30 will provide only a single floating IP. A /29 allocation will provide 5 floating IPs. Once the Terraform has finished, the following steps are required to enable the external networking. - Assign the elastic IP subnet to the "Controller" physical host via the Equinix Metal Web GUI. - Log into the Controller physical node via SSH and execute: -``` +```sh sudo bash ExternalNetwork.sh ``` For example, if your CIDR subnet is 10.20.30.0/24 the command would be: -``` +```sh sudo bash ExternalNetwork.sh 10.20.30.0/24 ``` From there, assign a floating IPs via the dashboard and update security groups to permit the desired ports. -## External Block Storage - -Equinix Metal offeres block storage that can be attached to compute nodes and used as ephemeral storage for VMs. This involves creating the storage via the Equinix Metal Web App, associating the storage with a compute node, and setting up the volume within the compute node. In this example, a 1TB volume is being created for use as ephemeral storage. - # Stop the OpenStack Nova Compute service -``` +```sh service nova-compute stop ``` -# Create and assign a storage volume - -Create the volume via the Equinix Metal Web App and assign to the compute node. -See the steps at: https://metal.equinix.com/developers/docs/servers/elastic-block-storage/ - -``` -apt-get -y install jq -packet-block-storage-attach -fdisk /dev/mapper/volume-YOUR_ID_HERE # create a new volume (n) and accept defaults -mkfs.ext4 /dev/mapper/volume-YOUR_ID_HERE-part1 -blkid | grep volume-YOUR_ID_HERE-part1 # take note of the UUID -``` - -# Copy over the existing Nova data - -``` -mnt /dev/mapper/volume-YOUR_ID_HERE /mnt -rsync -avxHAX --progress /var/lib/nova/ /mnt -umount /mnt -rm -rf /var/lib/nova/* -vi /etc/fstab # add a line like UUID=YOUR-UUID-HERE /var/lib/nova ext4 0 2 -mount -a -``` - # Start the OpenStack Nova Compute service -``` +```sh service nova-compute start ``` # Tearing it all down To decommission a compute node, the above steps must be done in reverse order. - -``` -umount /var/lib/nova -packet-block-storage-deatach -``` - -Via the Equinix Metal Web App, detach the volume from the host, and then delete the volume. The physical host can then be deprovisioned via Terraform destroy. +The physical host can then be deprovisioned via Terraform destroy. \ No newline at end of file diff --git a/sample-arm.terraform.tfvars b/sample-arm.terraform.tfvars index 962bccd..abddee1 100644 --- a/sample-arm.terraform.tfvars +++ b/sample-arm.terraform.tfvars @@ -5,13 +5,14 @@ # # c2.large.arm - 32 Core Ampere eMAG, 128GB, 480GB, 2x10Gbps # -metal_controller_type = "c2.large.arm" -metal_dashboard_type = "c2.large.arm" -metal_compute-arm_type = "c2.large.arm" +metal_controller_type = "c3.large.arm64" +metal_dashboard_type = "c3.large.arm64" +metal_compute-arm_type = "c3.large.arm64" openstack_compute-arm_count = 1 openstack_compute-x86_count = 0 +metal_metro = "da" # Use an existing project: # metal_create_project = false # metal_project_id = "..." diff --git a/sample-gen2.terraform.tfvars b/sample-gen2.terraform.tfvars deleted file mode 100644 index b4858f4..0000000 --- a/sample-gen2.terraform.tfvars +++ /dev/null @@ -1,15 +0,0 @@ -# -# Equinix Metal 2nd Generation Hardware -# -# This configuration file will override the defaults in vars.tf -# -# c2.medium - 24 Core AMD EPYC 7401p, 64GB, 960GB, 2x10Gbps -# n2.xlarge - 28 Core Xeon Gold 5120, 384GB, 3.8TB, 4x10Gbps -# -metal_controller_type = "c2.medium.x86" -metal_dashboard_type = "c2.medium.x86" -metal_compute-x86_type = "n2.xlarge.x86" -openstack_compute-arm_count = 1 -openstack_compute-x86_count = 1 - - diff --git a/sample-gen3.terraform.tfvars b/sample-gen3.terraform.tfvars index fc2f1b0..c0d302e 100644 --- a/sample-gen3.terraform.tfvars +++ b/sample-gen3.terraform.tfvars @@ -3,14 +3,18 @@ # # This configuration file will override the defaults in vars.tf # -# c3.medium - 24 Core AMD EPYC 7402P, 64GB, 960GB, 2x10Gbps -# s3.xlarge - 24 Core Intel 4214, 192GB, 1.9TB, 2x10Gbps +# c3.medium - 24 Core AMD EPYC 7401p, 64GB, 2x480GB SSD, 2x10Gbps +# https://metal.equinix.com/product/servers/c3-medium/ +# s3.xlarge - 24 Core Xeon Silver 4214, 192GB, 2x256GB SSD, 2x960GB, 12x8TB HDD, 2x10Gbps +# https://metal.equinix.com/product/servers/s3-xlarge/ +# metal_controller_type = "c3.medium.x86" metal_dashboard_type = "c3.medium.x86" metal_compute-x86_type = "s3.xlarge.x86" openstack_compute-arm_count = 1 openstack_compute-x86_count = 1 +metal_metro = "da" # Use an existing project: # metal_create_project = false diff --git a/sample.terraform.tfvars b/sample.terraform.tfvars index cd915b0..c1c4f12 100644 --- a/sample.terraform.tfvars +++ b/sample.terraform.tfvars @@ -3,17 +3,20 @@ # # This configuration file will override the defaults in vars.tf # -# c2.medium - 24 Core AMD EPYC 7401p, 64GB, 960GB, 2x10Gbps -# n2.xlarge - 28 Core Xeon Gold 5120, 384GB, 3.8TB, 4x10Gbps -# c2.large.arm - 32 Core Ampere eMAG, 128GB, 480GB, 2x10Gbps +# c3.medium - 24 Core AMD EPYC 7401p, 64GB, 2x480GB SSD, 2x10Gbps +# https://metal.equinix.com/product/servers/c3-medium/ +# n3.xlarge - 32 Core Xeon Gold 6314, 512GB, 2x240GB SSD, 2x3.8TB NVMe, 4x25Gbps +# https://metal.equinix.com/product/servers/n3-xlarge/ +# c3.large.arm64 - 80 Core Ampere Altra Q80-30, 256GB, 2x960GB NVMe, 2x25Gbps +# https://metal.equinix.com/product/servers/c3-large-arm64/ # -metal_controller_type = "c2.medium.x86" -metal_dashboard_type = "c2.medium.x86" -metal_compute-arm_type = "c2.large.arm" -metal_compute-x86_type = "n2.xlarge.x86" +metal_controller_type = "c3.medium.x86" +metal_dashboard_type = "c3.medium.x86" +metal_compute-arm_type = "c3.large.arm64" +metal_compute-x86_type = "n3.xlarge.x86" openstack_compute-arm_count = 1 openstack_compute-x86_count = 1 - +metal_metro = "da" # Use an existing project: # metal_create_project = false diff --git a/variables.tf b/variables.tf index bc91a3e..f1db23f 100644 --- a/variables.tf +++ b/variables.tf @@ -2,6 +2,11 @@ variable "equinix_metal_auth_token" { description = "Your metal API key" } +variable "metal_metro" { + description = "Metal Metro (https://metal.equinix.com/developers/docs/locations/metros/)" + default = "da" +} + variable "equinix_metal_project_id" { type = string default = "null" @@ -48,7 +53,7 @@ variable "openstack_compute-x86_count" { variable "equinix_metal_compute-arm_type" { description = "Instance type of OpenStack ARM compute nodes" - default = "c2.large.arm" + default = "c3.large.arm64" } variable "openstack_compute-arm_count" {