Home > Advent Calendar 2013 | Docker | Vagrant > ざっくり分かる Vagrant 1.4 / Docker Provisioner

ざっくり分かる Vagrant 1.4 / Docker Provisioner

この記事の所要時間: 745

Shin x blog Advent Calendar 2013 の 10 日目です。

vagrant

Vagrant 1.4 がリリースされました。Docker Provisioner を中心に新機能をざっくりと見てみました。

ダウンロードページの変更

さあ、1.4 をダウンロードしよう、と今までのダウンロードページに行くと 1.4 のリンクがありません><

新しいダウンロードページからダウンロードしましょう。

Download Vagrant – Vagrant

Docker Provisioner

Docker 対応として Docker Provisioner が追加されました。

このプロビジョナを使うと Docker 自体のインストールが自動で行われ(!)、その後、docker pull や docker run を実行することができます。

下記の Vagrantfile では Docker Provisioner を使って、docker run を実行する例です。

他のプロビジョナ( chef や puppet 等)と一緒に使うことも可能なようです。

precise64 Box ファイルで vagrant up してみました。Docker インストールやコンテナ実行が行われていますね。

$ vagrant up
(snip)
[default] Running provisioner: docker...
[default] Installing Docker (latest) onto machine...
[default] Starting Docker containers...
[default] -- Container: ubuntu
$

vagrant ssh して、VM の中に入りました。Docker は最新の 0.7.1 が入っています。

vagrant@precise64:~$ docker info
Client version: 0.7.1
Go version (client): go1.2
Git commit (client): 88df052
Server version: 0.7.1
Git commit (server): 88df052
Go version (server): go1.2
Last stable version: 0.7.1
Go version (client): go1.2

docker info を見ると aufs が Driver となっています。

vagrant@precise64:~$ docker info
Containers: 1
Images: 3
Driver: aufs
 Root Dir: /var/lib/docker/aufs
  Dirs: 5

docker ps -a で確認すると、Vagrantfile に書いた bash コマンドが実行されていました。

vagrant@precise64:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
54ead2bad23d        ubuntu:12.04        bash -l             About a minute ago   Exit 0                                  condescending_albattani

Docker – Provisioning – Vagrant Documentation

CentOS の Box ファイル

CentOS 6.5 の Box ファイルでも試してみました。上記の Vagrantfile から box ファイルを変更しただけです。

$ vagrant up
(snip)
[default] Running provisioner: docker...
[default] Installing Docker (latest) onto machine...
Vagrant attempted to execute the capability 'docker_install'
on the detect guest OS 'redhat', but the guest doesn't
support that capability. This capability is required for your
configuration of Vagrant. Please either reconfigure Vagrant to
avoid this capability or fix the issue by creating the capability.
$

あ、エラーになりました。redhat 系のゲスト OS はサポートしていないようです。。。Docker 自体は、CentOS で動くようになっているので、今後に期待ですね。

private network を設定しているとエラー

private network を設定しているとエラーが発生する場合があるようです。

“Configuring and enabling network interfaces” fails with ssh error Issue #2614 mitchellh/vagrant

他の新機能

Machine-Readable Output

システムが読み込みやすい形式で、vagrant コマンドの実行結果?を出力します。changelog を見ると –machine-readable フラグを使うようなのです。

試しに vagrant up –machine-readable を実行したのですが、何も出力されませんでした。

Machine Readable Output – Command-Line Interface – Vagrant Documentation

Enforcing a Vagrant Version

Vagrant.require_version オプションを Vagrantfile に記述することで、実行する vagrant のバージョンを指定できます。バージョンが合わないために予期せぬ挙動になることを防止します。

Synced Folder Plugins

synced_folder の実装をプラグインで行うことができるようになりました。nfs がプラグインとして提供されています。

すでに、rsync, scp, NFS(ホストがゲストをマウントするパターン))のプラグイン実装が存在するようです。

Box downloading will resume if interrupted

Box ファイルのダウンロードが中断しても、次回再開できるようになりました。

Box checksums

追加した BOX ファイルのチェックサムを検証します。

NFS on VirtualBox no longer requires a static IP

VirtualBox 上の NFS では、static IP が必要なくなりました。

Running multiple “vagrant up” commands in parallel with VirtualBox

VirtualBox での vagrant up を並行して実行できるようになりました。CI 環境などでは有効ですね。( Docker で良いかもしれませんが。)

Multiple SSH keys

複数の SSH Key を指定することが可能になりました。また、プロビジョニングで、安全ではない Vagrant のキーをより安全なキーに置き換えることもできます。

さいごに

synced_folder のプラグイン化や、Box ファイルダウンロードの resume 機能など色々な改良が施されたバージョンですが、今回の目玉は、Docker Provisioner ですね。

これまでもプロビジョニングで Docker インストールや docker コマンドの実行は可能でしたが、Docker Provisioner の登場により、さらに手軽に Docker を利用できます。

Docker を利用するベースとして Vagrant を使うというシーンが増えていきそうです。

Vagrant 1.4 – Vagrant

Pocket

follow us in feedly

Home > Advent Calendar 2013 | Docker | Vagrant > ざっくり分かる Vagrant 1.4 / Docker Provisioner

検索
フィード
メタ情報

Return to page top