【问题标题】:Terraform failing to set some attributes for GCP Compute Engine during deployingTerraform 在部署期间未能为 GCP Compute Engine 设置某些属性
【发布时间】:2020-07-11 10:49:47
【问题描述】:

我正在使用terraform 导入现有GCP Compute Engine Resource 的状态,以便以后可以使用terraform 管理资源

我使用以下命令导入

  terraform import google_compute_instance.default <project-d>/us-east1-b/server-001

之后我执行terraform show 来识别现有资源的状态并将其输出复制粘贴到main.tf 文件中。

现在当我执行terraform plan 时,它会显示以下错误

   Error: "label_fingerprint": this field cannot be set
   # google_compute_instance.default:
   on main.tf line 2, in resource "google_compute_instance" "default":
   2: resource "google_compute_instance" "default" {

   Error: "current_status": this field cannot be set
   on main.tf line 2, in resource "google_compute_instance" "default":
   2: resource "google_compute_instance" "default" {

   Error: "network_interface.0.name": this field cannot be set
   on main.tf line 2, in resource "google_compute_instance" "default":
   2: resource "google_compute_instance" "default" {

  Error: "instance_id": this field cannot be set
  on main.tf line 2, in resource "google_compute_instance" "default":
  2: resource "google_compute_instance" "default" {

  Error: : invalid or unknown key: id
  on main.tf line 2, in resource "google_compute_instance" "default":
  2: resource "google_compute_instance" "default" { 

以下是代码行

project              = "<Project-ID>"
current_status       = "TERMINATED"
name                 = "server-001"
hostname             = "server-001.example.com"
id                   = "projects/<project-id>/zones/us-east1-b/instances/server-001"
instance_id          = "7335818403011119952"
labels               = {
    "env"    = "dev"
    "server" = "app"
}
machine_type         = "f1-micro"
zone                 = "us-east1-b"
boot_disk {
    auto_delete = true
    device_name = "server-001"
    mode        = "READ_WRITE"
    source      = "https://www.googleapis.com/compute/v1/projects/<projec-id>/zones/us-east1-b/disks/server-001"
    initialize_params {
        image  = "https://www.googleapis.com/compute/v1/projects/centos-cloud/global/images/centos-7-v20200309"
        labels = {}
        size   = 10
        type   = "pd-standard"
    }
}
 network_interface {
    name               = "nic0"
    network            = "https://www.googleapis.com/compute/v1/projects/<projec-id>/global/networks/adminproject-vpc"
    network_ip         = "10.3.0.2"
    subnetwork         = "https://www.googleapis.com/compute/v1/projects/<projec-id>/regions/us-east1/subnetworks/app-subnet"
    subnetwork_project = "<project-id>"
}

Terraform版本如下

   $ terraform version
     Terraform v0.12.24
    + provider.google v3.29.0

删除这些属性可以解决问题,但我们不能在为 terraform 创建清单文件时设置这些属性吗?请指导。

【问题讨论】:

    标签: google-cloud-platform terraform google-compute-engine


    【解决方案1】:

    Terraform 无法管理这些字段。它们可以用于其他资源的配置,但不能在 google_compute_instance 资源本身上进行修改,因为它们是由 GCP 委派的。您可以查看google_compute_instance 资源here 支持的参数。

    【讨论】:

      猜你喜欢
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 2012-11-30
      • 2013-11-07
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多