Cloud Workstations を使用すると、ワークステーション コンテナが起動する前に、ホスト ワークステーション VM でカスタム起動スクリプトを実行できます。これは、VM レベルの構成を実行する場合や、ワークステーション コンテナの外部で実行する必要がある追加のソフトウェアをインストールする場合に便利です。
ホスト VM でカスタム起動スクリプトを実行することは高度な機能です。 起動スクリプトを使用する代わりに、コンテナイメージをカスタマイズすることをおすすめします。
起動スクリプトを使用する場合は、ホスト VM が COS に基づいてオペレーティング システムの定期的な更新を受け取るため、スクリプトが Container-Optimized OS(COS)イメージの変更と互換性があることを確認してください。
始める前に
Google Cloud CLI をインストールし、
フェデレーション ID を使用して gcloud CLI にログインします。
ログイン後、
初期化するには、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init起動スクリプトを準備する
ホスト ワークステーション 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: バケット内のスクリプト ファイルに付ける名前。
ワークステーション構成で使用されるサービス アカウントに、 バケットとスクリプト ファイルにアクセスする権限があることを確認します。 または、スクリプトを一般公開することもできます。
ワークステーション構成を作成する
カスタム起動スクリプトを使用するには、ワークステーション構成を作成し、スクリプトの Cloud Storage URI を指定します。
コンソール
ワークステーション構成を作成するときにカスタム起動スクリプトを構成するには:
コンソールで、[**ワークステーションの構成**] ページに移動します。 Google Cloud
[add] [Create] をクリックします。
[基本情報] ページで、構成の名前を入力し、ワークステーション クラスタを選択して、[続行] をクリックします。
[マシンの設定] ページで、マシンの設定を構成して、[続行] をクリックします。
[環境設定] ページで、[コンテナの詳細オプション] セクションを開きます。
[カスタム起動スクリプト] フィールドに、起動スクリプトの Cloud Storage パス(
gs://BUCKET_NAME/SCRIPT_NAMEなど)を入力します。残りの手順を完了し、[作成] をクリックします。
REST
REST API を使用してカスタム起動スクリプトを構成するには、ワークステーション構成を作成し、host.gceInstance メッセージの startupScriptUri フィールドをスクリプトの Cloud Storage URI に設定します。
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 で接続 してスクリプトをデバッグできます。
- 準備状況チェック: 起動スクリプトはベストエフォート型であり、 ワークステーションの起動をブロックしません。スクリプトの実行に時間がかかる場合や失敗した場合でも、ワークステーションが準備完了としてマークされることがあります。スクリプトが完了するまでワークステーションが 準備完了としてマークされないようにするには、 準備状況チェックの実装を検討してください。
次のステップ
- プラットフォーム ロギングの詳細を確認する。
- 開発環境をカスタマイズする。
- ワークステーションの問題をトラブルシューティングする。