昨年の12月、
今週のRecipeでは、
Snappy Ubuntu Core
Snappy Ubuntu Coreの特徴や位置づけについてはUbuntu Weekly Topicsの2014年12月12日号が参考になります。
簡単にまとめておくと、
平たく言うとCoreOSやRed HatのAtomicのUbuntu版です。Snappyがこれらと異なるのは、
2015年の6月には15.
IoT向けについてはErler Roboticsが早々にUbuntu搭載ドローンや蜘蛛型ロボットを販売しているのに加えて、
Snappyを起動できるプラットフォーム
Snappyのシステムイメージ自体はさまざまなプラットフォーム向けにリリースされています。
- QEMU/
KVM - Vagrant/
VirtualBox - OVFに対応した仮想アプライアンス
- Microsoft Azure
- Google Compute Engine
(GCE) - Amazon Web Service
(AWS) - BeagleBone Black
- Raspberry Pi 2
(今のところ非公式)
いずれのプラットフォームもコマンド体系や使える機能は同じです
BeagleBone BlackやRasbperry Pi 2といった組み込み基板向けの場合、
Snappyを起動する:KVM編
既にUbuntuとCPU仮想化支援機構が動いているマシンがあれば、
$ sudo apt-get install qemu-kvm $ wget http://jp.releases.ubuntu.com/15.04/ubuntu-15.04-snappy-amd64-generic.img.xz $ unxz ubuntu-15.04-snappy-amd64-generic.img.xz $ kvm -m 512 -redir :4200::4200 -redir :8443::443 -redir :8022::22 ubuntu-15.04-snappy-amd64-generic.img $ ssh -p 8022 ubuntu@localhost
stableチャンネルのリリース版のイメージをダウンロードし、
アカウントとパスワードはそれぞれ
4200番ポートは後で説明するWebDMで利用します。WebDMを使用しないなら指定しなくても問題ありません。同様に8443番ポートは後でインストールするownCloudパッケージのためにリダイレクトしています。こちらも必要なければオプションから外しても問題ありません。
Snappyを起動する:Vagrant/VirutalBox編
KVMを直接利用するのではなく、
●UbuntuでSnappyを起動する場合 $ sudo apt-get install vagrant virtualbox $ vagrant box add snappy http://cloud-images.ubuntu.com/snappy/15.04/core/stable/current/core-stable-amd64-vagrant.box $ vagrant init snappy $ vagrant up $ vagrant ssh ●Ubuntu以外のマシンでSnappyを起動する場合 vagrant init ubuntu/ubuntu-15.04-snappy-core-stable vagrant up vagrant ssh
Snappyを起動する:AWS編
手元で仮想マシンを立ち上げられないのであれば、
$ sudo apt-get install python3-pip $ sudo pip3 install awscli $ aws configure AWS Access Key ID [None]: (access key) AWS Secret Access Key [None]: (secret access key) Default region name [None]: ap-northeast-1 Default output format [None]: json $ ssh-keygen -t rsa -f ~/.ssh/snappy-rsa $ aws ec2 import-key-pair --key-name snappy-key --public-key-material file://~/.ssh/snappy-rsa.pub
今回はPython 3のpipとawcliを使用しています。Python 2環境しかない場合は
「access key」
前述のKVMイメージもそうですが、
#cloud-config
snappy:
ssh_enabled: True
最新のstableチャンネルのイメージを検索しましょう。
$ aws ec2 describe-images --owners 099720109477 \ --filters "Name=name,Values=*Snappy-core-stable*"
上記で検索したImageId
$ aws ec2 run-instances --image-id ami-6c0a6704 \ --key-name snappy-key --instance-type m3.medium --user-data file://cloud.cfg
出力されるInstanceIdを保存し、
$ aws ec2 describe-instances --instance-ids InstanceId $ ssh -i ~/.ssh/snappy-rsa ubuntu@PublicDnsName
Microsoft AzureやGoogle Compute Engineについても、
Snappyをサポートしていないクラウドサービスであっても、
snappyコマンドの使い方
Snappyシステムの中では
システムの状態
まずはinfoサブコマンドでシステムの状態を確認してみましょう。
$ snappy info release: ubuntu-core/15.04/stable architecture: amd64 frameworks: webdm apps:
releaseフィールドは使用しているシステムの状態で、
frameworksフィールドにはインストールされている
アプリケーションが独立して動作するのに対して、
KVMイメージの場合、
インストールされているパッケージのバージョンリストはlistサブコマンドで確認できます。
$ snappy list -v Name Date Version Developer ubuntu-core 2015-09-17 5 ubuntu* webdm 2015-09-17 0.9 canonical* generic-amd64 2015-09-17 1.4 canonical*
最後についているアスタリスク
$ sudo parted /dev/sda print Model: ATA QEMU HARDDISK (scsi) Disk /dev/sda: 3900MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 4194kB 8389kB 4194kB grub bios_grub 2 8389kB 75.5MB 67.1MB fat32 system-boot boot, esp 3 75.5MB 1149MB 1074MB ext4 system-a 4 1149MB 2223MB 1074MB ext4 system-b 5 2223MB 3900MB 1677MB ext4 writable
grubがブートローダーをインストールする領域で、
writableはユーザーデータやアプリケーション、
$ ls -l /apps/webdm/ drwxr-xr-x 6 clickpkg clickpkg 4096 Sep 17 12:51 0.9 lrwxrwxrwx 1 root ubuntu 3 Oct 4 10:14 current -> 0.9
上記を見るとわかるように、
システムのアップデートとロールバック
試しに古いバージョンのSnappyイメージからアップデートしてみましょう。まず、
listサブコマンドで状態を確認してみましょう
$ snappy list -uv Name Date Version ubuntu-core* 2015-09-17 5 webdm* 1-01-01 0.9.2 generic-amd64 2015-07-29 1.4
より新しいubuntu-coreとwebdmがリリースされているのでアップデートしましょう。
$ sudo snappy update Installing ubuntu-core (5) Syncing boot files Starting download of ubuntu-core (中略) Waiting for webdm_snappyd_0.9.service to stop. Name Date Version Developer ubuntu-core 2015-09-17 5 ubuntu! webdm 1-01-01 0.9.2 canonical Reboot to use the new ubuntu-core. $ snappy list -v Name Date Version Developer ubuntu-core 2015-07-29 4 ubuntu* ubuntu-core 2015-09-17 5 ubuntu! webdm 2015-07-29 0.9 canonical webdm 2015-10-05 0.9.2 * generic-amd64 2015-07-29 1.4 canonical* Reboot to use the new ubuntu-core. $ ls -l /apps/webdm/ total 8 drwxr-xr-x 6 clickpkg clickpkg 4096 Jul 29 04:07 0.9 drwxr-xr-x 6 clickpkg clickpkg 4096 Oct 5 16:53 0.9.2 lrwxrwxrwx 1 root root 5 Oct 5 16:53 current -> 0.9.2
listサブコマンドによって、
さらにアップデート時のメッセージにもあるように、
$ df -h / Filesystem Size Used Avail Use% Mounted on /dev/sda3 976M 568M 341M 63% /
どうやら/dev/
$ sudo shutdown -r now
再度ログインした上で、
$ snappy list -v Name Date Version Developer ubuntu-core 2015-09-17 5 ubuntu* ubuntu-core 2015-07-29 4 ubuntu webdm 2015-07-29 0.9 canonical webdm 2015-10-05 0.9.2 sideload* generic-amd64 2015-07-29 1.4 canonical* $ df -h / Filesystem Size Used Avail Use% Mounted on /dev/sda4 976M 583M 327M 65% /
アクティブフラグが新しいバージョン
さらにSnappy特有のこれまでのUbuntuにはない機能が
$ sudo snappy rollback ubuntu-core Setting ubuntu-core to version 4 Name Date Version Developer ubuntu-core 2015-07-29 4 ubuntu! Reboot to use the new ubuntu-core. $ sudo shutdown -r now $ df -h / Filesystem Size Used Avail Use% Mounted on /dev/sda3 976M 568M 341M 63% / $ snappy list -v Name Date Version Developer ubuntu-core 2015-07-29 4 ubuntu* ubuntu-core 2015-09-17 5 ubuntu! webdm 2015-07-29 0.9 canonical webdm 2015-10-05 0.9.2 sideload* generic-amd64 2015-07-29 1.4 canonical*
これだけです。これだけで、
アプリケーションのインストール
アプリケーションやフレームワークのインストールもsnappyコマンドを利用します。searchサブコマンドを使うとインストールできるアプリケーションやフレームワークを検索できます
$ snappy search hello Name Version Summary say 1.4 say hello-world 1.0.18 hello-world (forks not shown: 2) spi-test.pedronis 0.3 spi-test hello-dbus-fwk 1.0.2 hello-dbus-fwk saythis 1.3 saythis Use --show-all to see all available forks.
helloで検索するといろいろなsnapパッケージがリストアップされますが、
$ sudo snappy install hello-world Installing hello-world (中略) Name Date Version Developer ubuntu-core 2015-09-17 5 ubuntu hello-world 2015-10-05 1.0.18 canonical webdm 2015-09-17 0.9 canonical generic-amd64 2015-09-17 1.4 canonical $ ls -l /apps/ total 12 drwxr-xr-x 2 root ubuntu 4096 Oct 5 18:21 bin drwxr-xr-x 3 root root 4096 Oct 5 18:21 hello-world.canonical drwxr-xr-x 3 root ubuntu 4096 Sep 17 12:51 webdm $ hello-world.echo Hello World!
searchサブコマンドの結果は、
$ snappy search owncloud Name Version Summary $ snappy search docker Name Version Summary docker 1.6.2.003 Docker $ sudo snappy install docker Installing docker (中略) Name Date Version Developer ubuntu-core 2015-09-17 5 ubuntu docker 2015-10-05 1.6.2.003 canonical hello-world 2015-10-05 1.0.18 canonical webdm 2015-09-17 0.9 canonical generic-amd64 2015-09-17 1.4 canonical $ snappy search owncloud Name Version Summary owncloud 8.0.2.006 Owncloud 8.0.2 $ sudo snappy install owncloud Installing owncloud (中略) Name Date Version Developer ubuntu-core 2015-09-17 5 ubuntu docker 2015-10-05 1.6.2.003 canonical hello-world 2015-10-05 1.0.18 canonical owncloud 2015-10-05 8.0.2.006 canonical webdm 2015-09-17 0.9 canonical generic-amd64 2015-09-17 1.4 canonical
このowncloudアプリは単純に

また、
$ snappy info release: ubuntu-core/15.04/stable architecture: amd64 frameworks: docker, webdm apps: hello-world, owncloud
Snappyコマンドのブラウザ版:WebDM
WebDMはWebベースのSnappyシステム管理システムです。
KVM版のイメージであれば最初からWebDMが入っています。入っていない場合は、


今はまだパッケージリストの表示やインストールぐらいしかできませんが、