CoreOS で CloudStorage 上のスタートアップスクリプトを利用する
Posted: , Modified: GoogleCloudPlatform CoreOS Qiita
本稿は Qiita 投稿記事 のバックアップです.
概要
Google Compute Engine にて,インスタンスの OS に CoreOS を選んだ場合,なぜか CloudStorage からスタートアップスクリプトを読み込めない.CloudStorage にアクセスするためのパッケージを準備するスクリプトを別サーバからダウンロードして対応する.
スタートアップスクリプト
Google Compute Engine ではインスタンス起動時に実行する スタートアップスクリプト を指定できる.ドキュメント には CloudStorage に置いたファイルをスタートアップスクリプトに指定できると書かれているが,OS が CoreOS の場合,URL スキーム gs
を扱うコマンドがスタートアップスクリプト実行時点では用意されていないようだ.http
や https
にはアクセスできるため,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
使用する場合,メタデータとして,
- startup-script-url: https://gist.githubusercontent.com/jkawamoto/8c8ea77840a564bbd2f5/raw/d14f18573a6ea6f8284aa422ac73b76111c639fe/gistfile1.txt
- startup:
<本来のスタートアップスクリプトのURL>
を設定すれば良い.