【发布时间】:2021-05-05 16:46:24
【问题描述】:
我在 Terraform 中成功创建了一个 Azure Ubuntu VM,它在创建完成后运行 remote-exec 配置程序。在这个 remote-exec 块中,我创建了可以通过 SSH 访问的用户帐户。由于我有公钥,我还想将每个公钥添加到各自的 authorized_keys 文件中。我的做法是这样的:
"sudo adduser --quiet --disabled-password --shell /bin/bash --home /home/username--gecos \"Firstname Lastname\" username",
"sudo mkdir ~/../username/.ssh",
"sudo chmod 700 ~/../username/.ssh/",
"sudo touch ~/../username/.ssh/authorized_keys",
"sudo echo ${file("userKeys/username.pub")} > ~/../username/.ssh/authorized_keys",
"sudo chmod 600 ~/../username/.ssh/authorized_keys",
"sudo chown -R username.username ~/../username/"
不幸的是,这会导致 Terraform 在应用后崩溃,可能是由于文件中的双引号引起的。所以我也尝试了
"echo ${file("userKeys/username.pub")}"
效果很好。
在这一点上,我真的不知道如何解决这个问题。也许在 remote-exec 中使用 file() 是错误的方法?
【问题讨论】:
-
userKeys/username.pub 文件在哪里?它是在您的远程 Azure VM 还是本地计算机中?你的意思是你在本地机器上有公钥?
-
在这种情况下,是的,我在执行 terraform 脚本的同一台本地计算机上拥有该公钥。 userKeys 只是这个项目中的一个子文件夹。
标签: terraform terraform-provider-azure