无法使用Terraform停止GCP VM

时间:2020-10-05 09:42:54

标签: google-cloud-platform terraform

我尝试使用 desired_status =“ TERMINATED” 在terraform中停止GCP VM,但出现以下错误代码:

错误:参数不受支持

在main.tf第24行的资源“ google_compute_instance”“默认”中: 24:desired_status =“已终止”

此处不应使用名为“ desired_status”的参数。

完整的地形代码为:

terraform {
  required_providers {
    google = {
      source = "hashicorp/google"
    }
  }
}

provider "google" {
  version = "3.5.0"

  credentials = file("cred.json")

  project = "project-gcp-25625415"
  region  = "us-central1"
  zone    = "us-central1-c"
}

resource "google_compute_instance" "default"{
  name         = "terra2"
  machine_type = "f1-micro"
  zone         = "us-central1-a"

  desired_status = "TERMINATED"
  
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }

  network_interface {
    network = "default"

    access_config {
      // Ephemeral IP
    }
  }

}

2 个答案:

答案 0 :(得分:1)

看看terraform-provider-google的发行说明。

要使用desired_status字段来停止和启动GCE VM实例,您至少应使用version 3.11或更高版本的gcp提供程序:

计算:添加了管理状态的功能 google_compute_instance个字段中的desired_status个资源 (#4797

答案 1 :(得分:1)

Terraform 确实是为声明性操作而设计的,停止实例更像是一种程序性或命令性操作。

查看 https://docs.infraql.io/language-spec/exec#stopping-a-google-compute-engine-instance,InfraQL 支持访问所有 Google 提供程序方法,可以非交互式或交互式运行,

EXEC compute.instances.stop 
@instance = 'demo-instance-1', 
@project = 'infraql-demo', 
@zone = 'australia-southeast1-a';