无法通过 ssh 进入从 sourceImage 创建的实例 "google_compute_instance_from_machine_image"
cannot ssh into instance created from sourceImage "google_compute_instance_from_machine_image"
我正在使用这个 terraform 模板从 sourceImage 创建一个实例:
resource "tls_private_key" "sandbox_ssh" {
algorithm = "RSA"
rsa_bits = 4096
}
output "tls_private_key_sandbox" { value = "${tls_private_key.sandbox_ssh.private_key_pem}" }
locals {
custom_data1 = <<CUSTOM_DATA
#!/bin/bash
CUSTOM_DATA
}
resource "google_compute_instance_from_machine_image" "sandboxvm_test_fromimg" {
project = "<proj>"
provider = google-beta
name = "sandboxvm-test-fromimg"
zone = "us-central1-a"
tags = ["test"]
source_machine_image = "projects/<proj>/global/machineImages/sandboxvm-test-img-1"
can_ip_forward = false
labels = {
owner = "test"
purpose = "test"
ami = "sandboxvm-test-img-1"
}
metadata = {
ssh-keys = "${var.sshuser}:${tls_private_key.sandbox_ssh.public_key_openssh}"
}
network_interface {
network = "default"
access_config {
// Include this section to give the VM an external ip address
}
}
metadata_startup_script = local.custom_data1
}
output "instance_ip_sandbox" {
value = google_compute_instance_from_machine_image.sandboxvm_test_fromimg.network_interface.0.access_config.0.nat_ip
}
output "user_name" {
value = var.sshuser
}
我什至无法 ping / netcat,无论是创建的 VM 的私有 IP 还是 public IP。即使是在自定义脚本中传递的“串行端口”ssh 也有帮助。
我怀疑,既然它是“google 测试版”功能,它是否有效/可靠?
也许我们还不能,从 GCP 中的“SourceImages”创建 VM,即 GCE,除非另有证明,简单的错误在我的 TF 中不是很明显。
我实际上可以解决它,所有这些听起来都让 GCE 很恶心。
问题是在创建基本图像时,我选择的实例具有以下内容:
#sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
#sudo update-alternatives --install /usr/bin/python3 python /usr/bin/python3.7 1
也许我应该尝试使用“python3”而不是“python”,
但是当基于此 MachineImage 实例化 GCE 时,它会寻找一个相当过时的“python2.7”而不是“python3”,并抱怨缺少/不可读的包,如 netiplan 等
注释“更新选项”并安装 python3.6 和 python3.7 明确地成功了!
我正在使用这个 terraform 模板从 sourceImage 创建一个实例:
resource "tls_private_key" "sandbox_ssh" {
algorithm = "RSA"
rsa_bits = 4096
}
output "tls_private_key_sandbox" { value = "${tls_private_key.sandbox_ssh.private_key_pem}" }
locals {
custom_data1 = <<CUSTOM_DATA
#!/bin/bash
CUSTOM_DATA
}
resource "google_compute_instance_from_machine_image" "sandboxvm_test_fromimg" {
project = "<proj>"
provider = google-beta
name = "sandboxvm-test-fromimg"
zone = "us-central1-a"
tags = ["test"]
source_machine_image = "projects/<proj>/global/machineImages/sandboxvm-test-img-1"
can_ip_forward = false
labels = {
owner = "test"
purpose = "test"
ami = "sandboxvm-test-img-1"
}
metadata = {
ssh-keys = "${var.sshuser}:${tls_private_key.sandbox_ssh.public_key_openssh}"
}
network_interface {
network = "default"
access_config {
// Include this section to give the VM an external ip address
}
}
metadata_startup_script = local.custom_data1
}
output "instance_ip_sandbox" {
value = google_compute_instance_from_machine_image.sandboxvm_test_fromimg.network_interface.0.access_config.0.nat_ip
}
output "user_name" {
value = var.sshuser
}
我什至无法 ping / netcat,无论是创建的 VM 的私有 IP 还是 public IP。即使是在自定义脚本中传递的“串行端口”ssh 也有帮助。
我怀疑,既然它是“google 测试版”功能,它是否有效/可靠? 也许我们还不能,从 GCP 中的“SourceImages”创建 VM,即 GCE,除非另有证明,简单的错误在我的 TF 中不是很明显。
我实际上可以解决它,所有这些听起来都让 GCE 很恶心。 问题是在创建基本图像时,我选择的实例具有以下内容:
#sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
#sudo update-alternatives --install /usr/bin/python3 python /usr/bin/python3.7 1
也许我应该尝试使用“python3”而不是“python”, 但是当基于此 MachineImage 实例化 GCE 时,它会寻找一个相当过时的“python2.7”而不是“python3”,并抱怨缺少/不可读的包,如 netiplan 等
注释“更新选项”并安装 python3.6 和 python3.7 明确地成功了!