Назад | Перейти на главную страницу

При использовании Terraform для создания экземпляров GCE возникает ошибка при подключении дополнительного диска?

Мой файл terraform выглядит так.

resource "google_compute_disk" "sqlserversecondary" {
    name = "sql-server-secondary"
    type = "pd-ssd"
    zone = "us-central1-a"
    size = "512"
}

resource "google_compute_instance" "sqlserver2016rc2" {
    name = "sqlserver2016rc2"
    machine_type = "n1-highmem-8"

    tags = ["database", "sqlserver2016rc2"]
    zone = "us-central1-a"

    disk {
        image = "sqlserver2016"
        size = "120"
    }

    disk {
        image = "sql-server-secondary"
    }

    network_interface {
        network = "default"
        access_config {
            // Ephemeral IP
        }
    }

    service_account {
        scopes = ["userinfo-email", "compute-ro", "storage-ro"]
    }
}

Второй диск существует в GCE, но в этой конкретной ситуации я продолжаю получать следующую ошибку.

Error applying plan:

1 error(s) occurred:

* google_compute_instance.sqlserver2016rc2: Error creating instance: googleapi: Error 400: Invalid value for field 'resource.disks[1].initializeParams': ''. Cannot specify initializeParams for non-boot persistent disks., invalid

Для вашего второго диска вы хотите использовать disk = "sql-server-secondary" вместо того image как идентификатор. Кроме того, для ссылки на второй диск лучше всего использовать синтаксис интерполяции Terraform (например, ${...}), чтобы обеспечить создание и управление вашими ресурсами в соответствующем порядке.

resource "google_compute_disk" "sqlserversecondary" {
  name = "sql-server-secondary"
  type = "pd-ssd"
  zone = "us-central1-a"
  size = "512"
}

resource "google_compute_instance" "sqlserver2016rc2" {
  name         = "sqlserver2016rc2"
  machine_type = "n1-highmem-8"

  tags = ["database", "sqlserver2016rc2"]
  zone = "us-central1-a"

  disk {
    image = "ubuntu-1404-trusty-v20160114e"
    size  = "120"
  }

  disk {
    disk = "${google_compute_disk.sqlserversecondary.name}" // s/image/disk
  }

  network_interface {
    network = "default"

    access_config {
      // Ephemeral IP
    }
  }

  service_account {
    scopes = ["userinfo-email", "compute-ro", "storage-ro"]
  }
}

Наборы Terraform InitializeParams для дисков из уже существующих образов (код), которая вызывает полученную вами ошибку. Кажется, что в этом сценарии может быть ошибка, связанная с подключением не загрузочного диска из существующего образа, но я все еще вникаю в это.

Надеюсь это поможет!