使用terraform将spring引导jar上传到GCE实例

使用terraform将spring引导jar上传到GCE实例,terraform,terraform-provider-gcp,Terraform,Terraform Provider Gcp,将some-spring-boot.jar复制到GCE实例中的最佳方法是什么 我原以为这是一项相当普通的任务,但在谷歌搜索之后,却找不到关于它的任何文档 我已经在GCP中生成了服务帐户,并将所有内容保存到GCP-credentials.json中: { "type": "service_account", "project_id": "some project", "private_key_id

将some-spring-boot.jar复制到GCE实例中的最佳方法是什么

我原以为这是一项相当普通的任务,但在谷歌搜索之后,却找不到关于它的任何文档

我已经在GCP中生成了服务帐户,并将所有内容保存到GCP-credentials.json中:

{
  "type": "service_account",
  "project_id": "some project",
  "private_key_id": "someid",
  "private_key": "some key",
  "client_email": "xxx@developer.gserviceaccount.com",
  "client_id": "xxxx",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/xxxdeveloper.gserviceaccount.com"
}
以下是我在谷歌上搜索数小时后正在做的事情:

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

provider "google" {
    version = "3.5.0"
    credentials = file("gcp-credentials.json")
    project = "some project"
    zone = "us-central1-a"
}

resource "google_compute_instance" "vm_instance" {
    name = "my-instance"
    machine_type = "e2-medium"
    #metadata_startup_script = file("startup.sh")

    tags = [
        "http-server",
        "https-server"]

    boot_disk {
        initialize_params {
            image = "some image with jdk"
        }
    }

    network_interface {
        network = "default"
        access_config {}
    }

    provisioner "file" {
        source = "../../../target/my-jar-1.0.0.jar"
        destination = "/tmp/my-jar-1.0.0.jar"

        connection {
            type = "ssh"
            user = "root"
            private_key = file("gcp-credentials.json").private_key
            agent = "false"
        }
    }
}
无论何时我运行它都会显示

[ERROR] Error: Missing required argument
[ERROR] 
[ERROR]   on main.tf line 43, in resource "google_compute_instance" "vm_instance":
[ERROR]   43:         connection {
[ERROR] 
[ERROR] The argument "host" is required, but no definition was found.
任何帮助都将非常感激

未经测试(我也从未将Terraform用于GCP),请尝试:

思路:

  • 主机
    似乎确实需要(根据)
  • 同样的文档提示特殊的
    self
    变量:
连接块中的表达式不能引用其父资源 按姓名相反,他们可以使用特殊的自我对象

self对象表示连接的父资源,并且具有 该资源的所有属性

  • 我猜rest是如何从GCP实例获取IP地址的
host = self.network_interface.0.network_ip