Создайте шаблон экземпляра из существующего экземпляра с помощью Terraform. - PullRequest
1 голос
/ 24 января 2020

Я создаю экземпляр с помощью terraform .. с помощью «Provider» я копирую скрипт в экземпляр, а с «connection» я подключаюсь к экземпляру и выполняю этот скрипт. То, что я хочу сделать, это создать шаблон экземпляра из этого недавно созданного экземпляра, и, наконец, я создам группу управляемых экземпляров. Есть ли способ создания шаблона экземпляра с помощью этого недавно созданного экземпляра?

Вот код, который я пробовал, но получаю следующую ошибку, поэтому она не работает:

Ошибка: Ошибка создания шаблона экземпляра: googleapi: Ошибка 400: Неверное значение для поля 'resource.properties.disks [0] .source ':' https://www.googleapis.com/compute/v1/projects/my-sandbox/zones/us-west1-a/disks/etcd-1 '. Диск должен быть в региональной области. Недопустимо в строке main.tf 280, в ресурсе "google_compute_instance_template" "default": 280: ресурс "google_compute_instance_template" "default" {

  provider "google" {
  region      = "${var.region}"
  project     = "${var.project_name}"
  credentials = "${file("${var.credentials_file_path}")}"
}

### Create 1st etcd instance
resource "google_compute_instance" "etcdinstance1" {


  name         = "etcd-1"
  machine_type = "${var.machine_type}"
  zone         = "${var.region}-a"


  boot_disk {
    initialize_params {
      image = "${var.os_image}"
    }
  }

  network_interface {
    network = "${var.network_name}"
    subnetwork  = "${var.subnetwork_name}"

    access_config {
      # Ephemeral
    }
  }

  /* metadata = {

  } */

 service_account {
    scopes = ["https://www.googleapis.com/auth/compute.readonly"]
  }

}

resource "null_resource" "cluster1"{

  depends_on = [google_dns_record_set.dns1,google_dns_record_set.dns2,google_dns_record_set.dns3,google_dns_record_set.registry-srv-client3,google_dns_record_set.registry-srv-server3]
  provisioner "file" {
        source      = "script.sh"
        destination = "/tmp/script.sh"

    }
 provisioner "remote-exec" {
    inline = [
      "sudo chmod +x /tmp/script.sh",
      "/tmp/script.sh",
    ]

  }

connection {

      host     
    host ="${google_compute_instance.etcdinstance1.network_interface[0].access_config[0].nat_ip}"
      type        = "ssh"
      user        = "${var.ssh_username}"
      private_key = "${file("${var.private_key_path}")}"
      agent       = false

    }

}



resource "google_compute_instance_template" "default" {
  name        = "etcdserver-template"
  description = "This template is used to create etcd server instances."
  depends_on  = 
  tags = ["foo", "bar"]

  labels = {
    environment = "dev"
  }

  instance_description = "description assigned to instances"
  machine_type         = "n1-standard-1"
  can_ip_forward       = false

  scheduling {
    automatic_restart   = true
    on_host_maintenance = "MIGRATE"
  }

  // Create a new boot disk from an image


  // Use an existing disk resource
  disk {
    // Instance Templates reference disks by name, not self link
    #source      = google_compute_disk.foobar.name
    source = "${google_compute_instance.etcdinstance1.boot_disk[0].source}"
    #source = "etcd-1"
    auto_delete = false
    boot        = true
  }

  network_interface {
    network = "default"
  }

  metadata = {
    foo = "bar"
  }

  service_account {
    scopes = ["userinfo-email", "compute-ro", "storage-ro"]
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...