Trying to get the POC/Demo working and hitting this error under terraform 1.3.5
Setup account, project and User API Token in Equinix console.
Configured TFVARS with User API Token + Project GUID.
Any idea or pointers why this is occurring and/or known fixes...?
Thanks!
│ Error: API Error HTTP 422 Userdata unrecognized userdata format
│
│ with module.eksa.equinix_metal_device.eksa_admin,
│ on ..\..\main.tf line 141, in resource "equinix_metal_device" "eksa_admin":
│ 141: resource "equinix_metal_device" "eksa_admin" {
Full Apply Results; Project ID redacted
C:\Repos\terraform-equinix-metal-eks-anywhere\examples\deploy>terraform.exe apply
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# module.eksa.equinix_metal_device.eksa_admin will be created
+ resource "equinix_metal_device" "eksa_admin" {
+ access_private_ipv4 = (known after apply)
+ access_public_ipv4 = (known after apply)
+ access_public_ipv6 = (known after apply)
+ always_pxe = false
+ billing_cycle = "hourly"
+ created = (known after apply)
+ deployed_facility = (known after apply)
+ deployed_hardware_reservation_id = (known after apply)
+ force_detach_volumes = false
+ hostname = (known after apply)
+ id = (known after apply)
+ locked = (known after apply)
+ metro = "sv"
+ network = (known after apply)
+ network_type = (known after apply)
+ operating_system = "ubuntu_20_04"
+ plan = "m3.small.x86"
+ ports = (known after apply)
+ project_id = "REDACTED"
+ root_password = (sensitive value)
+ ssh_key_ids = (known after apply)
+ state = (known after apply)
+ tags = (known after apply)
+ updated = (known after apply)
+ user_data = (sensitive value)
+ wait_for_reservation_deprovision = false
}
# module.eksa.equinix_metal_device.eksa_node_cp[0] will be created
+ resource "equinix_metal_device" "eksa_node_cp" {
+ access_private_ipv4 = (known after apply)
+ access_public_ipv4 = (known after apply)
+ access_public_ipv6 = (known after apply)
+ always_pxe = false
+ billing_cycle = "hourly"
+ created = (known after apply)
+ deployed_facility = (known after apply)
+ deployed_hardware_reservation_id = (known after apply)
+ force_detach_volumes = false
+ hostname = (known after apply)
+ id = (known after apply)
+ ipxe_script_url = (known after apply)
+ locked = (known after apply)
+ metro = "sv"
+ network = (known after apply)
+ network_type = (known after apply)
+ operating_system = "custom_ipxe"
+ plan = "m3.small.x86"
+ ports = (known after apply)
+ project_id = "REDACTED"
+ root_password = (sensitive value)
+ ssh_key_ids = (known after apply)
+ state = (known after apply)
+ tags = (known after apply)
+ updated = (known after apply)
+ wait_for_reservation_deprovision = false
}
# module.eksa.equinix_metal_device.eksa_node_dp[0] will be created
+ resource "equinix_metal_device" "eksa_node_dp" {
+ access_private_ipv4 = (known after apply)
+ access_public_ipv4 = (known after apply)
+ access_public_ipv6 = (known after apply)
+ always_pxe = false
+ billing_cycle = "hourly"
+ created = (known after apply)
+ deployed_facility = (known after apply)
+ deployed_hardware_reservation_id = (known after apply)
+ force_detach_volumes = false
+ hostname = (known after apply)
+ id = (known after apply)
+ ipxe_script_url = (known after apply)
+ locked = (known after apply)
+ metro = "sv"
+ network = (known after apply)
+ network_type = (known after apply)
+ operating_system = "custom_ipxe"
+ plan = "m3.small.x86"
+ ports = (known after apply)
+ project_id = "REDACTED"
+ root_password = (sensitive value)
+ ssh_key_ids = (known after apply)
+ state = (known after apply)
+ tags = (known after apply)
+ updated = (known after apply)
+ wait_for_reservation_deprovision = false
}
# module.eksa.equinix_metal_gateway.gw will be created
+ resource "equinix_metal_gateway" "gw" {
+ id = (known after apply)
+ ip_reservation_id = (known after apply)
+ private_ipv4_subnet_size = (known after apply)
+ project_id = "REDACTED"
+ state = (known after apply)
+ vlan_id = (known after apply)
+ vrf_id = (known after apply)
}
# module.eksa.equinix_metal_port.cp_bond0[0] will be created
+ resource "equinix_metal_port" "cp_bond0" {
+ bond_id = (known after apply)
+ bond_name = (known after apply)
+ bonded = false
+ disbond_supported = (known after apply)
+ id = (known after apply)
+ layer2 = true
+ mac = (known after apply)
+ name = (known after apply)
+ network_type = (known after apply)
+ port_id = (known after apply)
+ type = (known after apply)
+ vlan_ids = (known after apply)
+ vxlan_ids = (known after apply)
}
# module.eksa.equinix_metal_port.cp_eth0[0] will be created
+ resource "equinix_metal_port" "cp_eth0" {
+ bond_id = (known after apply)
+ bond_name = (known after apply)
+ bonded = false
+ disbond_supported = (known after apply)
+ id = (known after apply)
+ mac = (known after apply)
+ name = (known after apply)
+ network_type = (known after apply)
+ port_id = (known after apply)
+ type = (known after apply)
+ vlan_ids = (known after apply)
+ vxlan_ids = (known after apply)
}
# module.eksa.equinix_metal_port.dp_bond0[0] will be created
+ resource "equinix_metal_port" "dp_bond0" {
+ bond_id = (known after apply)
+ bond_name = (known after apply)
+ bonded = false
+ disbond_supported = (known after apply)
+ id = (known after apply)
+ layer2 = true
+ mac = (known after apply)
+ name = (known after apply)
+ network_type = (known after apply)
+ port_id = (known after apply)
+ type = (known after apply)
+ vlan_ids = (known after apply)
+ vxlan_ids = (known after apply)
}
# module.eksa.equinix_metal_port.dp_eth0[0] will be created
+ resource "equinix_metal_port" "dp_eth0" {
+ bond_id = (known after apply)
+ bond_name = (known after apply)
+ bonded = false
+ disbond_supported = (known after apply)
+ id = (known after apply)
+ mac = (known after apply)
+ name = (known after apply)
+ network_type = (known after apply)
+ port_id = (known after apply)
+ type = (known after apply)
+ vlan_ids = (known after apply)
+ vxlan_ids = (known after apply)
}
# module.eksa.equinix_metal_port.eksa_admin_bond0 will be created
+ resource "equinix_metal_port" "eksa_admin_bond0" {
+ bond_id = (known after apply)
+ bond_name = (known after apply)
+ bonded = true
+ disbond_supported = (known after apply)
+ id = (known after apply)
+ layer2 = false
+ mac = (known after apply)
+ name = (known after apply)
+ network_type = (known after apply)
+ port_id = (known after apply)
+ type = (known after apply)
+ vlan_ids = (known after apply)
+ vxlan_ids = (known after apply)
}
# module.eksa.equinix_metal_reserved_ip_block.public_ips will be created
+ resource "equinix_metal_reserved_ip_block" "public_ips" {
+ address = (known after apply)
+ address_family = (known after apply)
+ cidr = (known after apply)
+ cidr_notation = (known after apply)
+ custom_data = jsonencode({})
+ gateway = (known after apply)
+ global = (known after apply)
+ id = (known after apply)
+ manageable = (known after apply)
+ management = (known after apply)
+ metro = "sv"
+ netmask = (known after apply)
+ network = (known after apply)
+ project_id = "REDACTED"
+ public = (known after apply)
+ quantity = 16
+ tags = (known after apply)
+ type = "public_ipv4"
+ wait_for_state = "created"
}
# module.eksa.equinix_metal_ssh_key.ssh_pub_key will be created
+ resource "equinix_metal_ssh_key" "ssh_pub_key" {
+ created = (known after apply)
+ fingerprint = (known after apply)
+ id = (known after apply)
+ name = (known after apply)
+ owner_id = (known after apply)
+ public_key = (known after apply)
+ updated = (known after apply)
}
# module.eksa.equinix_metal_vlan.provisioning_vlan will be created
+ resource "equinix_metal_vlan" "provisioning_vlan" {
+ description = "provisioning_vlan"
+ id = (known after apply)
+ metro = "sv"
+ project_id = "REDACTED"
+ vxlan = (known after apply)
}
# module.eksa.local_file.ssh_private_key will be created
+ resource "local_file" "ssh_private_key" {
+ content = (known after apply)
+ directory_permission = "0777"
+ file_permission = "0600"
+ filename = (known after apply)
+ id = (known after apply)
}
# module.eksa.null_resource.create_cluster will be created
+ resource "null_resource" "create_cluster" {
+ id = (known after apply)
+ triggers = {
+ "ids" = (known after apply)
}
}
# module.eksa.null_resource.wait_for_cloud_init will be created
+ resource "null_resource" "wait_for_cloud_init" {
+ id = (known after apply)
}
# module.eksa.random_string.resource_suffix will be created
+ resource "random_string" "resource_suffix" {
+ id = (known after apply)
+ length = 6
+ lower = true
+ min_lower = 0
+ min_numeric = 0
+ min_special = 0
+ min_upper = 0
+ number = true
+ numeric = true
+ result = (known after apply)
+ special = false
+ upper = false
}
# module.eksa.random_string.ssh_key_suffix will be created
+ resource "random_string" "ssh_key_suffix" {
+ id = (known after apply)
+ length = 3
+ lower = true
+ min_lower = 0
+ min_numeric = 0
+ min_special = 0
+ min_upper = 0
+ number = true
+ numeric = true
+ result = (known after apply)
+ special = false
+ upper = false
}
# module.eksa.tls_private_key.ssh_key_pair will be created
+ resource "tls_private_key" "ssh_key_pair" {
+ algorithm = "RSA"
+ ecdsa_curve = "P224"
+ id = (known after apply)
+ private_key_openssh = (sensitive value)
+ private_key_pem = (sensitive value)
+ private_key_pem_pkcs8 = (sensitive value)
+ public_key_fingerprint_md5 = (known after apply)
+ public_key_fingerprint_sha256 = (known after apply)
+ public_key_openssh = (known after apply)
+ public_key_pem = (known after apply)
+ rsa_bits = 4096
}
Plan: 18 to add, 0 to change, 0 to destroy.
Changes to Outputs:
+ eksa_admin_ip = (known after apply)
+ eksa_admin_ssh_key = (known after apply)
+ eksa_admin_ssh_user = "root"
+ eksa_nodes_sos = (known after apply)
+ eksa_pool_admin = (known after apply)
+ eksa_public_ips_cidr = (known after apply)
+ eksa_public_ips_gateway = (known after apply)
+ eksa_public_ips_netmask = (known after apply)
+ eksa_vlan_id = (known after apply)
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
module.eksa.tls_private_key.ssh_key_pair: Creating...
module.eksa.random_string.resource_suffix: Creating...
module.eksa.random_string.ssh_key_suffix: Creating...
module.eksa.random_string.resource_suffix: Creation complete after 0s [id=zpz0k7]
module.eksa.random_string.ssh_key_suffix: Creation complete after 0s [id=hkm]
module.eksa.equinix_metal_vlan.provisioning_vlan: Creating...
module.eksa.equinix_metal_reserved_ip_block.public_ips: Creating...
module.eksa.equinix_metal_vlan.provisioning_vlan: Creation complete after 2s [id=1ef8b88a-762c-4497-a327-b87754946bad]
module.eksa.tls_private_key.ssh_key_pair: Creation complete after 2s [id=40bb078d4033298b1b17d6e98dcfae8e0fff7089]
module.eksa.equinix_metal_ssh_key.ssh_pub_key: Creating...
module.eksa.local_file.ssh_private_key: Creating...
module.eksa.local_file.ssh_private_key: Creation complete after 0s [id=ae18c8bc2978795f474edd593d3fde37f75281fe]
module.eksa.equinix_metal_ssh_key.ssh_pub_key: Creation complete after 1s [id=6f96a44b-64a9-43d4-9283-e0578d578002]
module.eksa.equinix_metal_reserved_ip_block.public_ips: Creation complete after 2s [id=6be17170-551e-43b6-93be-dc8c1ecbbef8]
module.eksa.equinix_metal_gateway.gw: Creating...
module.eksa.equinix_metal_device.eksa_node_dp[0]: Creating...
module.eksa.equinix_metal_device.eksa_node_cp[0]: Creating...
module.eksa.equinix_metal_device.eksa_admin: Creating...
module.eksa.equinix_metal_gateway.gw: Creation complete after 1s [id=d2499c05-349c-4199-9296-9bebf869e42e]
module.eksa.equinix_metal_device.eksa_node_dp[0]: Still creating... [10s elapsed]
module.eksa.equinix_metal_device.eksa_node_cp[0]: Still creating... [10s elapsed]
module.eksa.equinix_metal_device.eksa_node_cp[0]: Still creating... [20s elapsed]
module.eksa.equinix_metal_device.eksa_node_dp[0]: Still creating... [20s elapsed]
module.eksa.equinix_metal_device.eksa_node_dp[0]: Still creating... [30s elapsed]
module.eksa.equinix_metal_device.eksa_node_cp[0]: Still creating... [30s elapsed]
module.eksa.equinix_metal_device.eksa_node_cp[0]: Still creating... [40s elapsed]
module.eksa.equinix_metal_device.eksa_node_dp[0]: Still creating... [40s elapsed]
module.eksa.equinix_metal_device.eksa_node_cp[0]: Still creating... [50s elapsed]
module.eksa.equinix_metal_device.eksa_node_dp[0]: Still creating... [50s elapsed]
module.eksa.equinix_metal_device.eksa_node_dp[0]: Creation complete after 1m15s [id=ffc39c07-af85-479e-acab-ff87a6e6d0c3]
module.eksa.equinix_metal_device.eksa_node_cp[0]: Creation complete after 1m26s [id=22c9f8a0-d5e1-4714-bb0c-0de748be5327]
module.eksa.equinix_metal_port.dp_bond0[0]: Creating...
module.eksa.equinix_metal_port.cp_bond0[0]: Creating...
module.eksa.equinix_metal_port.dp_bond0[0]: Still creating... [10s elapsed]
module.eksa.equinix_metal_port.cp_bond0[0]: Still creating... [10s elapsed]
module.eksa.equinix_metal_port.cp_bond0[0]: Creation complete after 13s [id=acc02bf6-b864-4dcb-849a-32a6cde594c3]
module.eksa.equinix_metal_port.cp_eth0[0]: Creating...
module.eksa.equinix_metal_port.dp_bond0[0]: Creation complete after 17s [id=7c5f901f-b15c-448c-81d6-7b61489a12e3]
module.eksa.equinix_metal_port.dp_eth0[0]: Creating...
module.eksa.equinix_metal_port.cp_eth0[0]: Still creating... [10s elapsed]
module.eksa.equinix_metal_port.dp_eth0[0]: Still creating... [10s elapsed]
module.eksa.equinix_metal_port.cp_eth0[0]: Creation complete after 17s [id=a49651de-22a4-4a0e-886e-a90875639af2]
module.eksa.equinix_metal_port.dp_eth0[0]: Creation complete after 17s [id=b7f60612-d368-4bb6-a1ae-d07e6fbf21ba]
╷
│ Error: API Error HTTP 422 Userdata unrecognized userdata format
│
│ with module.eksa.equinix_metal_device.eksa_admin,
│ on ..\..\main.tf line 141, in resource "equinix_metal_device" "eksa_admin":
│ 141: resource "equinix_metal_device" "eksa_admin" {
│
╵
C:\Repos\terraform-equinix-metal-eks-anywhere\examples\deploy>terraform.exe state list
module.eksa.equinix_metal_device.eksa_node_cp[0]
module.eksa.equinix_metal_device.eksa_node_dp[0]
module.eksa.equinix_metal_gateway.gw
module.eksa.equinix_metal_port.cp_bond0[0]
module.eksa.equinix_metal_port.cp_eth0[0]
module.eksa.equinix_metal_port.dp_bond0[0]
module.eksa.equinix_metal_port.dp_eth0[0]
module.eksa.equinix_metal_reserved_ip_block.public_ips
module.eksa.equinix_metal_ssh_key.ssh_pub_key
module.eksa.equinix_metal_vlan.provisioning_vlan
module.eksa.local_file.ssh_private_key
module.eksa.random_string.resource_suffix
module.eksa.random_string.ssh_key_suffix
module.eksa.tls_private_key.ssh_key_pair
Trying to get the POC/Demo working and hitting this error under
terraform 1.3.5
Any idea or pointers why this is occurring and/or known fixes...?
Thanks!
Full Apply Results; Project ID redacted