CoreOS で CloudStorage 上のスタートアップスクリプトを利用する

Posted: , Modified:   GoogleCloudPlatform CoreOS Qiita

本稿は Qiita 投稿記事 のバックアップです.

概要

Google Compute Engine にて,インスタンスの OS に CoreOS を選んだ場合,なぜか CloudStorage からスタートアップスクリプトを読み込めない.CloudStorage にアクセスするためのパッケージを準備するスクリプトを別サーバからダウンロードして対応する.

スタートアップスクリプト

Google Compute Engine ではインスタンス起動時に実行する スタートアップスクリプト を指定できる.ドキュメント には CloudStorage に置いたファイルをスタートアップスクリプトに指定できると書かれているが,OS が CoreOS の場合,URL スキーム gs を扱うコマンドがスタートアップスクリプト実行時点では用意されていないようだ.httphttps にはアクセスできるため,gs を扱い本当のスタートアップスクリプトを取得,実行するスクリプトを別に用意して対処する.

そのスクリプトは,下記の通りで gist に置いてある.

#!/bin/bash
URL=$(curl http://metadata/computeMetadata/v1/instance/attributes/startup -H "Metadata-Flavor: Google")

docker pull google/cloud-sdk

cd /tmp
docker run -t --rm google/cloud-sdk /google-cloud-sdk/bin/gsutil cat $URL | tr -d "\r" > startup.sh
chmod a+x startup.sh
./startup.sh

使用する場合,メタデータとして,

を設定すれば良い.