Cloud Workstations を使用すると、ワークステーション コンテナが起動する前に、ホスト ワークステーション VM でカスタム起動スクリプトを実行できます。これは、VM レベルの構成を実行する場合や、メインのワークステーション コンテナの外部で実行する必要がある追加のソフトウェアをインストールする場合に便利です。
始める前に
Google Cloud CLI をインストールします。 インストール後、 初期化するには、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init
外部 ID プロバイダ(IdP)を使用している場合は、まず
フェデレーション ID を使用して gcloud CLI にログインする必要があります。
Google Cloud CLI をインストールします。 インストール後、 初期化するには、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init
外部 ID プロバイダ(IdP)を使用している場合は、まず
フェデレーション ID を使用して gcloud CLI にログインする必要があります。
起動スクリプトを準備する
ホスト ワークステーション VM で実行する起動スクリプトを作成します。 スクリプトを作成する際は、次のガイドラインに従ってください。
- Cloud Workstations は、ワークステーションが適切に機能するように、指定したワークステーション コンテナと複数のシステム コンテナをホスト ワークステーション VM で実行します。すべてのコンテナは、
containerdランタイムとcrictlクライアントを使用して実行されます。 - 起動スクリプトによって起動された追加のコンテナは、
containerdを使用して実行します。ワークステーション コンテナ内で実行されている Docker デーモンとの干渉を防ぐため、ホスト VM で Docker は無効になっています。 - 起動スクリプトによって起動されたホストレベルのコンテナは、メインのワークステーション コンテナとやり取りできません。Identity and Access Management(IAM)チェックをバイパスするため、このような直接的なやり取りはサポートされていません。
起動スクリプトを Cloud Storage に保存する
スクリプトを Cloud Storage バケットにアップロードし、ワークステーションに関連付けられたサービス アカウントがスクリプトにアクセスできることを確認します。
スクリプトをバケットにアップロードします。
gcloud storage cp LOCAL_SCRIPT_PATH gs://BUCKET_NAME/SCRIPT_NAME次のように置き換えます。
LOCAL_SCRIPT_PATH: 起動スクリプト ファイルのローカルパス。BUCKET_NAME: Cloud Storage バケットの名前。SCRIPT_NAME: バケット内のスクリプト ファイルに付ける名前。
ワークステーション構成で使用されるサービス アカウントに、 バケットとスクリプト ファイルにアクセスする権限があることを確認します。 または、スクリプトを一般公開することもできます。
ワークステーション構成を作成する
カスタム起動スクリプトを使用するには、ワークステーション構成を作成し、host.gceInstance メッセージの startupScriptUri フィールドをスクリプトの Cloud Storage URI に設定します。
REST API を使用してワークステーション構成を作成します。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"host": {
"gceInstance": {
"poolSize": 1,
"startupScriptUri": "gs://BUCKET_NAME/SCRIPT_NAME",
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}' \
https://workstations.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/workstationClusters/CLUSTER_ID/workstationConfigs?workstation_config_id=CONFIG_ID
次のように置き換えます。
SERVICE_ACCOUNT: ワークステーション構成に関連付けられたサービス アカウントのメールアドレス。PROJECT_ID: 実際の Google Cloud プロジェクト ID。LOCATION: ワークステーション クラスタが配置されているリージョン。CLUSTER_ID: ワークステーション クラスタの ID。CONFIG_ID: 新しいワークステーション構成に割り当てる ID。
スクリプトの実行を確認する
スクリプトが正しく実行されたことを確認するには、次のいずれかの方法を使用します。
- シリアルポート 3 の出力ログ: スクリプトによって生成された出力ログは、 自動的にシリアルポート 3 の出力に送信されます。 ワークステーションに割り当てられた VM の名前を確認するには、 プラットフォーム ログをご覧ください。
- VM に SSH で接続する: 必要に応じて、ワークステーション VM に SSH で接続 してスクリプトをデバッグできます。
- 準備状況チェック: 起動スクリプトはベストエフォート型であり、ワークステーションの起動をブロックしません。スクリプトの実行に時間がかかる場合や、スクリプトが失敗した場合でも、ワークステーションが準備完了としてマークされることがあります。スクリプトが完了するまでワークステーションが 準備完了としてマークされないようにするには、 準備状況チェックの実装を検討してください。
次のステップ
- プラットフォーム ロギングの詳細を確認する。
- 開発環境をカスタマイズする。
- ワークステーションの問題をトラブルシューティングする。