Я создаю экземпляр с помощью 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"]
}
}