【问题标题】:Why does my webapp.sh not run and disk not attach to my GCP instance?为什么我的 webapp.sh 没有运行并且磁盘没有附加到我的 GCP 实例?
【发布时间】:2020-09-02 15:48:39
【问题描述】:

我正在尝试使用引导磁盘和额外磁盘创建 GCP 实例,同时还尝试使用 shell 脚本文件安装一些软件包。

我已尝试使用 file 配置程序将文件传输到实例,但它不起作用(出现超时错误)。附加磁盘也未附加到实例。

当我删除配置器时,基础架构设置工作正常,并且附加磁盘附加到实例。

ma​​in.tf

data "google_compute_zones" "available" {
  region  = var.gcp_region
  project = var.gcp_project
}

#Create boot disk
resource "google_compute_disk" "os-disk" {
  name   = format("os-disk-%s", var.instance_name)
  type   = "pd-ssd"
  image  = var.image
  size   = var.os_pd_ssd_size
  zone   = "us-central1-c"
}

#Create attached disk to instance size 30 GB
resource "google_compute_disk" "test-disk" {
  name   = format("test-disk-%s", var.instance_name)
  type   = "pd-ssd"
  size   = var.test_pd_ssd_size
  zone   = "us-central1-c"
}

#Main test instance
resource "google_compute_instance" "test" {
  name         = var.instance_name
  machine_type = var.machine_type
  tags = ["http-server", "https-server"]
  zone         = "us-central1-c"

  boot_disk {
    source = google_compute_disk.os-disk.name
    auto_delete = false
  }

  network_interface {
    network = "default"

    access_config {
      // Ephemeral IP
    }
  }


  lifecycle {
    ignore_changes = [attached_disk]
  }

  provisioner "file" {
    source      = "./scripts/webapp.sh"
    destination = "/home/webapp.sh"
  }

  provisioner "remote-exec" {
    inline = [
      "chmod +x /home/webapp.sh",
      "./webapp.sh",
    ]
  }

}

#Attached additional disk to instance 
resource "google_compute_attached_disk" "default" {
  disk     = google_compute_disk.test-disk.id
  instance = google_compute_instance.test.id
}

附加磁盘未附加,webapp.sh 也未传输到实例或在实例上执行。

为什么我的 webapp.sh 没有运行并且磁盘没有附加到我的 GCP 实例?

【问题讨论】:

  • 我想我会尝试重新创建 .. 但看起来我需要你的变量和文件。
  • @Kolban 嗨,非常感谢,但它现在开始工作了。我会更新问题的状态。再次感谢你

标签: google-cloud-platform terraform terraform-provider-gcp


【解决方案1】:

您不需要 file 或 remote-exec 配置程序,您只需使用 webapp.sh 在实例上直接执行 strong>metadata_startup_script如下:

resource "google_compute_instance" "test" {
  name         = var.instance_name
  machine_type = var.machine_type
  tags = ["http-server", "https-server"]
  zone         = "us-central1-c"

  boot_disk {
    source = google_compute_disk.os-disk.name
    auto_delete = false
  }

  network_interface {
    network = "default"

    access_config {
      // Ephemeral IP
    }
  }


  lifecycle {
    ignore_changes = [attached_disk]
  }

  metadata_startup_script = file("${path.module}/scripts/webapp.sh")

}

Terraform 无法解决安装卷等操作系统级别的问题。当您附加一个附加磁盘时,它作为硬件附加,而不是在操作系统配置中。这就像在计算机塔内通过 SATA 附加一个磁盘。您必须在实例的操作系统中明确挂载该磁盘才能被识别。

在此处阅读有关在 GCP 中安装地区永久性磁盘的更多信息: https://cloud.google.com/compute/docs/disks/add-persistent-disk

【讨论】:

  • 非常感谢您的回答明白了您的意思可能我必须更新一些更改。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
相关资源
最近更新 更多