EC2でSnappy Ubuntu Coreを使ってみた

ubuntu-400x400

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

Ubuntu Coreの最軽量化版、Snappy Ubuntu CoreがAWSでも使えるようになりました!

Announcing_Snappy_Ubuntu___Cloud___Ubuntu

ということで早速やってみました!

やってみた

 EC2をLaunchする

今回はus-east-1でやってます。EC2のLaunch画面で、[Community AMIs]から"ubuntu-core"で検索すると、以下のようにAMIがヒットします。インスタンスストア版とSSD版があるのですが、今回はSSD版を使用しました。

EC2_Management_Console

またLaunch時のUserDataの指定で、以下のように記述します。こうしないとsshdが起動しないためログインできません。

EC2_Management_Console 2

Launch後のSSHログインでは、ユーザ名に"ubuntu"を指定します。

$ ssh -i ./.ssh/mykey.pem -l ubuntu 54.172.XXX.XXX

snappyコマンドを使ってみる

Snappyではsnappyコマンドを使ってシステムを操作します。以下のようなオプションが用意されています。

$ snappy --help
Usage:snappy [-h] [-v]
             {info,versions,search,update-versions,update,rollback,install,uninstall,tags,build,chroot,framework,fake-version,nap}
             ...

snappy command line interface

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         Print this version string and exit

Commands:
  {info,versions,search,update-versions,update,rollback,install,uninstall,tags,build,chroot,framework,fake-version,nap}
    info
    versions
    search
    update-versions
    update
    rollback            undo last system-image update.
    install
    uninstall
    tags
    build
    chroot
    framework
    fake-version        ==SUPPRESS==
    nap                 ==SUPPRESS==

システム状態を確認するのはinfoです。初期状態ではubuntu-coreしか入っていません。

$ snappy info
release: ubuntu-core/devel
frameworks:
apps:

各パッケージのバージョンを確認するのはversionsです。

$ snappy versions
Part         Tag   Installed  Available  Fingerprint     Active
ubuntu-core  edge  141        -          7f068cb4fa876c  *

通常のUbuntuのようなapt-getコマンドは使えません。

$ apt-get update
Ubuntu Core does not use apt-get, see 'snappy --help'!

変わりにsnappyコマンドを使います。update-versionsで更新対象があるかを確認できます。今は最新状態なのでバージョンアップ対象は0です。更新する場合はupdateを使います。

$ snappy update-versions
0 updated components are available with your current stability settings.

Dockerをインストールする

とりあえずDockerを入れてみましょう。snappy searchでパッケージの存在を確認します。

$ snappy search docker
Part                               Version    Description
docker                             1.3.2.007  The docker app deployment mechanism

では、snappy installします。

$ sudo snappy install docker
docker      4 MB     [=============================================================================]    OK
Part    Tag   Installed  Available  Fingerprint     Active
docker  edge  1.3.2.007  -          b1f2f85e77adab  *

インストールされていることを確認。バージョン1.3.2がインストールされています。

$ snappy versions
Part         Tag   Installed  Available  Fingerprint     Active
ubuntu-core  edge  141        -          7f068cb4fa876c  *
docker       edge  1.3.2.007  -          b1f2f85e77adab  *

snappy infoすると、Dockerはframeworksとして表示されます。

$ snappy info
release: ubuntu-core/devel
frameworks: docker
apps:

Hello Worldを入れてみる

お試しパッケージであるhello-worldを入れてみます。

$ snappy search hello-world
Part         Version  Description
hello-world  1.0.3    Hello world example

$ sudo snappy install hello-world
hello-world     31 kB     [===============================================================================]    OK
Part         Tag   Installed  Available  Fingerprint     Active
hello-world  edge  1.0.3      -          02a04059ae9304  *

snappy versionすると、hello-worldがインストールされていることが確認できます。

$ snappy versions
Part         Tag   Installed  Available  Fingerprint     Active
ubuntu-core  edge  141        -          7f068cb4fa876c  *
docker       edge  1.3.2.007  -          b1f2f85e77adab  *
hello-world  edge  1.0.3      -          02a04059ae9304  *

hello-worldはappsとして表示されます。

$ snappy info
release: ubuntu-core/devel
frameworks: docker
apps: hello-world

実行するとこんな感じで出力されます。ちなみにただのシェルスクリプトです。

$ hello-world.hello
Hello World!

DockerコンテナでownCloudを動かしてみる

さてメイン。Dockerをインストールした状態では、Dockerイメージは何もありません。

$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

そこで、Dockerコンテナとして提供されているownCloudsnappy installコマンドでインストールします。

$ sudo snappy install owncloud
owncloud     23 kB     [==================================================================================]    OK
Part      Tag   Installed  Available  Fingerprint     Active
owncloud  edge  7.0.3.008  -          81ebbbea41f48e  *

ownCloud 7.0.3がインストールされます。

$ snappy versions
Part         Tag   Installed  Available  Fingerprint     Active
ubuntu-core  edge  141        -          7f068cb4fa876c  *
docker       edge  1.3.2.007  -          b1f2f85e77adab  *
hello-world  edge  1.0.3      -          02a04059ae9304  *
owncloud     edge  7.0.3.008  -          81ebbbea41f48e  *

ownCloudもappsとして表示されます。

$ snappy info
release: ubuntu-core/devel
frameworks: docker
apps: hello-world, owncloud

docker imagesコマンドで確認すると、 Dockerイメージが増えていることがわかります。

$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
kickinz1/big-owncloud   latest              44d3ad1f46e2        5 weeks ago         1.019 GB

ではシステムを再起動します。

$ sudo reboot

再起動後、以下のようにDockerプロセスが稼働しています。

$ ps aux | grep docker
root       591  0.0  0.3  19696  3184 ?        Ss   03:49   0:00 /bin/bash /apps/docker/1.3.2.007/bin/docker.wrap
root       595  0.2  1.7 347500 17348 ?        Sl   03:49   0:00 /apps/docker/1.3.2.007/bin/docker -G docker -d -g /var/lib//apps/docker/1.3.2.007 -H unix:///var/run/docker.sock
root       852  0.0  1.1 198688 11464 ?        Sl   03:49   0:00 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 443 -container-ip 172.17.0.2 -container-port 443
ubuntu    1375  0.0  0.0   8280   788 pts/0    S+   03:50   0:00 grep docker

このEC2に443/tcpで接続すると、以下のようにownCloud画面が表示されます!

ownCloud

さいごに

本当はsnappy rollbackもやりたかったのですが、タイミング悪く既に最新の状態でした。が、このロールバックができるという仕組みも、Snappyの一つの売りだと思います。

既にAmazon EC2 Container ServiceでCoreOSが使えるように、 Snappy Ubuntu CoreもECSで使えるようになる日も近いのでは無いでしょうか。楽しみですね!

AWS Cloud Roadshow 2017 福岡