2015-01-14に待望のSnappy Ubuntu CoreのOVAイメージが公開されました。以前はVMwareにデプロイするときはかなり面倒で、野良OVAイメージのビルドに次のステップが必要でした。
- qemu-imgコマンドでQCOW2イメージをVMDK形式する
- VMXファイルをマニュアルで記述する
- ovftoolコマンドでVMXファイルからOVAイメージを作成する
公式のOVAにはcloud-initもインストール済みなので、cloud-config.ymlをuserdataとして使えば、IDCFクラウドでもSnappy Ubuntu Coreが簡単に使えます。
OVAテンプレートの作成
Snappy Ubuntu Core now on the hypervisor of your choice with OVAのページにあるlatest OVA imageのリンクからOVAのURLを取得します。テンプレート名、説明、URL、OSタイプ以外はデフォルトです。OSタイプは一番近いUbuntu 12.04 (64bit)
を選びました。
- テンプレート名: 任意
- 説明: 任意
- URL: http://cloud-images.ubuntu.com/snappy/devel/core/current/devel-core-amd64-cloud.ova
- ゾーン: tesla
- ハイパーバイザー: VMware
- OSタイプ: Ubuntu 12.04 (64bit)
- フォーマット: OVA
- エクスポート: 有効
- パスワードリセット: 有効
- ダイナミックスケール: 有効
- ルートディスクコントローラ: scsi
- NICアダプタ: Vmxnet3
- キーボード: Japanese
仮想マシンの作成
最小設定のcloud-config
Snappy Ubuntu CoreはCoreOSと同じようにcloud-configを使って起動する必要があります。cloud-configを使わなくても起動はできますが、外部からのSSH接続が許可されていないため、コンソールからしか使えません。今回は最小設定のcloud-configを使います。
#cloud-config |
必要な情報の取得
仮想マシンを作成する時に必要なパラメータをIDCFクラウドのCLIを使い確認します。
- listTemplates: テンプレートのidを取得
- listZones: ゾーンのidを取得
- listServiceOfferings: 仮想マシンサイズのidを取得
- listSSHKeyPairs: SSH公開鍵の名前を取得
今回利用するOVAのSnappy Ubuntu CoreにはCloud-initがインストールされています。IDCFクラウドが採用しているCloudStackをDataSourceとして自動的に認識してくれるので、指定した名前のSSH公開鍵をubuntuユーザーのauthorized_keys
に登録してくれます。これはかなり便利です。
またAPIを実行するために必要な以下の情報をポータルの画面から確認しておきます。
IDCF_COMPUTE_HOST
: エンドポイントIDCF_COMPUTE_API_KEY
: APIキーIDCF_COMPUTE_SECRET_KEY
: シークレットキー
仮想マシン作成のPythonスクリプト
IDCFクラウドのCLIツールはPythonで書いているので、Pythonプログラムのモジュールとしてimportできます。cloud-configはuserdataとしてBASE64でエンコードしてからパラメータに使います。
#!/usr/bin/env python |
Pythonスクリプトの実行
仮想マシンが作成されるまで数分待ちます。SSHサーバーが起動するまでに初回設定が入るため、ポータル画面で状態がRunningになっていてもSSHで接続できるまでさらに数分必要です。コンソールでlogin待機になるまでしばらく待ちます。
SSH公開鍵認証でログイン
アカウント内の別の仮想マシンから、または、パブリックのIPアドレスをポートフォワードしてSSH公開鍵認証で接続します。
$ ssh -A ubuntu@snappy |
バージョン確認など
OSのバージョンを確認します。
$ cat /etc/lsb-release |
cloud-initのバージョンは0.7.7です。
$ cloud-init --version |
ubuntu-coreはedge 144がインストールされていて最新の状態です。
$ snappy versions |
snappyコマンドのバージョンです。
$ snappy --version |
まだframeworksもappsもインストールされていません。
$ snappy info |
Dockerをインストール
とりあえずDockerをインストールします。Snappy Ubuntu CoreではDockerのインストールはとても簡単なのですぐに使い始めることができます。
$ snappy search docker |
アプリのインストール
サンプルのhello-worldアプリをインストールします。
$ sudo snappy install hello-world |
先ほどのdockerはframeworks、hello-worldアプリはappsとしてレイアで区別されます。
$ snappy info |
Hello World!を表示するだけのアプリがインストールされました。
$ which hello-world.echo |