【发布时间】:2021-10-19 11:43:01
【问题描述】:
我正在尝试使用少量额外磁盘创建多个 VM。我给了 2 个额外的磁盘并想创建 2 个虚拟机。似乎只为一个虚拟机创建了额外的磁盘,而不是为另一个虚拟机创建了额外的磁盘,并且它抛出了该额外的磁盘名称已经存在。
Error: Error creating instance: googleapi: Error 400: The disk resource 'projects/xxxxxxx/zones/us-central1-a/disks/extra-disk-1-ab23e8823b41ac18' is already being used by 'projects/xxxxxxx/zones/us-central1-a/instances/xxxxxx', resourceInUseByAnotherResource
│
│ with module.compute_vm.google_compute_instance.vm_instance[1],
│ on ../../main.tf line 66, in resource "google_compute_instance" "vm_instance":
│ 66: resource "google_compute_instance" "vm_instance" {
示例文件夹中的Main.tf(调用模块)
module "compute_vm" {
source = "../../"
num_instances = 2
boot_disk_size_gb = "10"
disk2_type = "pd-ssd"
os_distro = "ubuntu"
extra_disks = [{ name = "extra-disk-1", disk2_size_gb = "16" }, { name = "extra-disk-2", disk2_size_gb = "15" }]
}
在模块 Main.tf 中
resource "google_compute_disk" "disk2" {
project = var.project_id
count = length(var.extra_disks)
name = "${var.extra_disks[count.index].name}-${random_id.instance_id.hex}"
type = var.disk2_type
size = var.extra_disks[count.index].disk2_size_gb
zone = var.zone
labels = {
environment = var.environment
}
}
resource "random_id" "instance_id" {
byte_length = 8
}
resource "google_compute_instance" "vm_instance" {
project = var.gcp_project_id
count = var.num_instances
name = "vm-${random_id.instance_id.hex}-${count.index + 1}"
machine_type = var.machine_type
zone = var.zone
boot_disk {
initialize_params {
image = lookup(var.image, var.os_distro)
size = var.boot_disk_size_gb
}
}
dynamic "attached_disk" {
for_each = google_compute_disk.disk2
content {
source = attached_disk.value.self_link
device_name = attached_disk.value.name
}
}
# attached_disk {
# source = element(google_compute_disk.disk2.*.self_link, count.index)
# device_name = element(google_compute_disk.disk2.*.name, count.index)
# }
network_interface {
subnetwork = data.google_compute_subnetwork.subnet.self_link
network_ip = element(google_compute_address.static.*.address, count.index)
}
lifecycle {
ignore_changes = [attached_disk]
}
}
【问题讨论】:
标签: google-cloud-platform terraform