我能够使用Terraform启动虚拟机,如果我从GCP Web UI封装到该虚拟机,则可以使用以下方式手动进行身份验证:
gcloud auth application-default login
gcloud auth login
然后我可以手动将GCP存储桶安装到VM:
gcsfuse bucket_name ~/mount_point/
但是我无法从Terraform启动脚本中自动执行此操作。当然,身份验证命令本质上是非常手动的,涉及跳转到浏览器以获取密钥等。并且gcsfuse命令显然在没有auth的情况下会失败,因此将其放入启动脚本中是行不通的。会产生预期的权限错误。
我已经在GCP中拥有各种服务和应用程序帐户,并且已经下载了相关的json密钥文件,但是我不知道如何从Terraform自动验证新VM以便安装存储桶。我怀疑这与google_service_account和google_service_account_key有关,但是我还没有弄清楚该怎么做。我只是不知道如何将json密钥文件添加到Terraform配置中,以便VM上运行启动脚本的root用户可以安装存储桶。
其他人建议这也可能与fstab有关。我已经在启动脚本中添加了以下内容:
echo 'bucket_name /mount/bucket_name gcsfuse rw,noauto,user' >> /fstab
我从外壳程序中看到echo命令有效(fstab进行了相应更改),但是我仍然无法安装存储桶。我也尝试使用mount而不是gcsfuse进行安装:
mount -allow_other -t gcsfuse -o rw,user bucket_name /mnt/bucket_name/
但这也不起作用。 mount不会产生错误,但是已挂载的目录仍然为空。 Gah!这里的解决方案是什么?
谢谢。