Terraform with Google Cloud: google_cloud_instance can’t fin



Terraform: 1.0.3

当尝试根据磁盘创建google_cloud_disk和google_cloud_instance时,来自配置的片段:

resource "google_compute_disk" "tst-disk1" {
name         = "tst-disk1"
image        = "debian-cloud/debian-10-buster-v20210217"
zone         = "us-central1-a"
type         = "pd-balanced"
physical_block_size_bytes = 4096
}
resource "google_compute_instance" "tst-instance1" {
name         = "tst-instance1"
machine_type = "e2-micro"
zone         = "us-central1-a"

boot_disk {
device_name = "tst-disk1"
initialize_params {
size = "10"
image = "https://www.googleapis.com/compute/v1/projects/projectname/zones/us-central1-a/disks/tst-disk1"
}
}
}

但是,当我执行' terraform apply '时,实例没有创建:

Error: Error resolving image name 'https://www.googleapis.com/compute/v1/projects/projectname/zones/us-central1-a/disks/tst-disk1': Could not find image or family https://www.googleapis.com/compute/v1/projects/projectname/zones/us-central1-a/disks/tst-disk1
│ 
│   with google_compute_instance.tst-instance1,
│   on instances.tf line 91, in resource "google_compute_instance" "tst-instance1":
│   91: resource "google_compute_instance" "tst-instance1"

但是当我执行"gcloud compute disks list——format=yaml"时,"absent"磁盘被列出,它的selfLink与问题磁盘完全匹配。

如何让Terraform检测google_compute_disk?在实例定义中使用" depends_on "没有帮助。

错误消息指出它找不到名为"[…]/zones/us-central1-a/disks/test -disk1"的映像,这是预料之中的,因为这是一个磁盘的URI,而不是一个实际的映像(例如'debian-cloud/debian-10- busters -v20210217')。

然而,在这里提供一个有效的映像将导致为该实例创建一个新的引导磁盘。在您的情况下,您可能不想创建一个新磁盘,而是使用刚才创建的磁盘。

为了使用google_compute_disk。test -disk1作为google_compute_instance的启动磁盘。test -instance1可以这样声明(使用boot_disk块中的source参数):

resource "google_compute_disk" "tst-disk1" {
name         = "tst-disk1"
image        = "debian-cloud/debian-10-buster-v20210217"
zone         = "us-central1-a"
type         = "pd-balanced"
}
resource "google_compute_instance" "tst-instance1" {
name         = "tst-instance1"
machine_type = "e2-micro"
zone         = "us-central1-a"

boot_disk {
source = google_compute_disk.tst-disk1.self_link
}
}

这在两个资源之间创建了显式的依赖关系,因为Terraform首先需要创建test -disk1,然后计算test -instance1中使用的self_link。

相关内容

  • 没有找到相关文章

最新更新