Хобрук: Ваш путь к мастерству в программировании

Почему мой webapp.sh не запускается и диск не подключается к моему экземпляру GCP?

Я пытаюсь создать экземпляр GCP с загрузочным диском и дополнительным диском, а также пытаюсь установить некоторые пакеты с помощью файла сценария оболочки.

Я попытался передать файл в экземпляр с помощью средства подготовки файлов, но он не работает (ошибка тайм-аута). Дополнительный диск также не подключается к экземпляру.

Когда я удаляю инициатор, настройка инфраструктуры работает нормально, и к экземпляру подключается дополнительный диск.

main.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?


  • Я думал, что попробую воссоздать .. но похоже, что мне нужны твои переменные и файлы. 17.05.2020
  • @Kolban Привет, спасибо за это, но теперь он начал работать. Я обновлю статус вопроса. спасибо еще раз 17.05.2020

Ответы:


1

Вам не нужен поставщик file или remote-exec, вы можете просто запустить webapp.sh на экземпляре с помощью 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.

18.05.2020
  • Большое спасибо за ответ получил вашу точку зрения, вероятно, мне нужно обновить некоторые изменения. еще раз спасибо 18.05.2020
  • Новые материалы

    Понимание дженериков в TypeScript: подробное руководство
    Введение TypeScript, строго типизированный надмножество JavaScript, хорошо известен своей способностью улучшать масштабируемость, удобочитаемость и ремонтопригодность приложений. Одной из..

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..