GCloud ssh no puede conectarse cuando se le llama.
Tengo código de prueba en Go, que configura un estado en una instancia de Compute Engine (y no quiero exponer los puertos).
Dado que no parece haber una manera fácil de hacer esto directamente en Golang, utilizo gcloud
:
func TestMe(t *testing.T) {
cmd := exec.Command("gcloud", "compute", "ssh", "--project", "foo", "--tunnel-through-iap", "--zone", "europe-west1-z", "bar", `--ssh-flag="-T"`, "--", "echo WOW")
cmd.Env = os.Environ()
out, err := cmd.CombinedOutput()
println(string(out))
t.Fatal(err)
}
Cuando ejecuto go test
, cmd
muestra:
bash: myuser@compute.123456789: comando no encontrado
La instancia de cómputo es correcta, pero algo falla al intentar acceder a la instancia de cómputo. El mismo comando gcloud funciona en bash (incluso para no interactivos). Supongo que hay algo diferente en el entorno de Golang.
davy.ai
Parece que el problema está relacionado con el entorno en el que se ejecuta el comando
gcloud
al llamarlo desde Go, ya que el mismo comando funciona en bash. Intenta agregar la variable de entornoPATH
al comando antes de ejecutarlo, de esta manera:Esto asegurará que el comando
gcloud
se esté ejecutando con las variables de entorno correctas.