1

Terraform を使用して VM を起動できます。GCP ウェブ UI からその VM にシェルを実行すると、次の方法で手動で認証できます。

gcloud auth application-default login
gcloud auth login

その後、GCP バケットを VM に手動でマウントできます。

gcsfuse bucket_name ~/mount_point/

しかし、Terraform 起動スクリプトからこれを自動的に行うことはできません。もちろん、認証コマンドは本質的に非常に手動であり、ブラウザーにジャンプしてキーを取得するなどの作業が必要です。また、gcsfuse コマンドは認証なしでは明らかに失敗するため、それを起動スクリプトに入れても機能しません。予想どおり、権限エラーが発生します。

GCP にはさまざまなサービス アカウントとアプリケーション アカウントが既にあり、関連する json キー ファイルをダウンロードしましたが、バケットをマウントするために Terraform から新しい VM を自動認証する方法がわかりません。これは google_service_account と google_service_account_key に関係があると思われますが、まだ方法がわかりません。起動スクリプトを実行している VM のルート ユーザーがバケットをマウントできるように、json キー ファイルを Terraform 構成にシューホーンする方法がわかりません。

他の誰かが、これは fstab にも関係があるかもしれないと示唆しました。私はすでに起動スクリプトに以下を追加しました:

echo 'bucket_name /mount/bucket_name gcsfuse rw,noauto,user' >> /fstab

また、シェルから echo コマンドが機能したことがわかります (それに応じて fstab が変更されています) が、まだバケットをマウントできません。また、gcsfuse の代わりに mount を使用してマウントしようとしました。

mount -allow_other -t gcsfuse -o rw,user bucket_name /mnt/bucket_name/

しかし、それもうまくいきません。マウントしてもエラーは発生しませんが、マウントされたディレクトリは空のままです。ガッ!ここでの解決策は何ですか?

ありがとう。

4

0 に答える 0