Meu arquivo terraform se parece com isso.
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"]
}
}
O segundo disco existe no GCE, mas nessa situação específica continuo recebendo o seguinte erro.
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
Para seu segundo disco, você deseja usar
disk = "sql-server-secondary"
em vez deimage
como identificador. Além disso, é melhor fazer referência ao segundo disco usando a sintaxe de interpolação do Terraform (por exemplo${...}
, ) para garantir que seus recursos sejam criados e gerenciados na ordem apropriada.O Terraform define
InitializeParams
discos que são de imagens pré-existentes ( código ) que estão causando o erro que você recebeu. Parece que pode haver um bug neste cenário, anexando um disco não inicializável de uma imagem existente, mas ainda estou investigando isso.Espero que isto ajude!