我们面临的问题是,我们已经通过 terraform 创建了 Windows VM,并且必须通过 terraform 进行连接,因此我们无法通过 terraform 为新创建的 Windows VM 添加用户名和密码
答案1
截至撰写本文时,由于缺少 TLS 实用程序,Terraform 官方记录的生成 GCP Windows VM 密码的方法实际上不起作用(我们应该每次生成一次性证书并计算其模数): https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/compute_instance_serial_port
我的破解方法是运行一个local-exec
配置程序来运行gcloud
命令来生成密码
gcloud compute reset-windows-password <...> --quiet | tee > $(grep password | cut -d ' ' -f2- | tr -d '\n' > pass.txt)
...然后将其写入文件,并在需要的地方读取它,例如作为输出。
对我来说,它运行得很好。但请记住time_sleep
在虚拟机刚创建后大约 4 分钟内执行此操作,否则命令将失败且不会出现错误。
此外,这会给您的管道增加一些开销。您需要设置和gcloud auth login
,而使用原生 gcp 提供程序时,这应该不是必需的。而且由于它将密码写入中间文件,如果您在临时环境(例如 docker)中运行 Terraform 管道,管理其状态会有点棘手。