使用Terraform创建Nutanix虚拟机无法绑定已有项目报错如何处理
报错根因
你遇到的422错误是因为project_reference参数放置的层级不符合当前使用的Nutanix Provider/Prism Central版本要求,API识别到了不支持的多余字段。
解决方案
- 首先添加项目数据源,避免手动填写UUID出错,将以下代码加入你的main.tf:
data "nutanix_project" "target_project" { project_name = "my_project" }
- 调整
project_reference的放置位置,不要直接写在nutanix_virtual_machine资源的根配置下,必须放到metadata块内部,修改后的VM资源配置示例如下:
resource "nutanix_virtual_machine" "vm1" { name = "test-${count.index+1}" count = var.counter description = "desc" num_vcpus_per_socket = 2 num_sockets = 2 memory_size_mib = 4096 guest_customization_sysprep = {} cluster_uuid = "my_uuid" # 新增metadata块放置project_reference metadata { project_reference { kind = "project" uuid = data.nutanix_project.target_project.id } } nic_list { subnet_uuid = "my_uuid" } disk_list { data_source_reference = { kind = "image" uuid = data.nutanix_image.ubuntu-clone.id } device_properties { disk_address = { device_index = 0 adapter_type = "SATA" } device_type = "DISK" } } }
- 版本兼容性校验
如果调整配置后仍然报错,确认两个依赖的版本符合要求:
- Nutanix Provider版本升级到1.5.0及以上稳定版,修改配置后执行
terraform init --upgrade完成升级 - Prism Central版本不低于pc.2021.1,低于该版本的Prism Central v3.1 API不支持直接在VM创建时指定项目,需先创建VM再手动关联项目。
注:project_reference仅需填写kind和uuid两个字段即可,name为非必填项,多余字段可能触发API校验错误。
内容的提问来源于stack exchange,提问作者ben_m
相关产品推荐
相关产品推荐

