Mac OS X + Vagrant上にDC/OS環境を構築する

はじめに

これまでAWSとGCPという複数のプラットフォームでDC/OS環境を構築してみました。

今度はローカル環境、手元のMacBook上にDC/OS環境を構築してみます。

やってみた

環境はMacBook Pro、OS X Yosemite(10.10.5)です。必要環境は以下の通り。

$ git --version
git version 2.5.4 (Apple Git-61)

$ vagrant --version
Vagrant 1.8.4

$ VBoxManage -v
4.3.38r106717

手順は公式ドキュメントGithub上のドキュメントに従います。

まず最初に、dcos-vagrantのレポジトリgitコマンドでcloneします。

$ git clone https://github.com/dcos/dcos-vagrant
$ cd dcos-vagrant

ホスト側の/etc/hostsファイルを管理するのに、Vagrantのプラグインであるvagrant-hostmanagerをインストールします。またそのために必要だったffigemコマンドでインストールしました。

$ sudo gem install ffi -v '1.9.14'
$ sudo vagrant plugin install vagrant-hostmanager

dcosのインストーラーをダウンロードします。

$ curl -O https://downloads.dcos.io/dcos/EarlyAccess/dcos_generate_config.sh

インストールに必要な、設定ファイルのパスを環境変数として設定します。

$ export DCOS_CONFIG_PATH=etc/config-1.7.yaml

VagrantConfig.yamlを作成します。このファイルにDC/OSのマシン構成が定義されており、後述するm1やa1といったVMの名前や役割などが記載されています。

$ cp VagrantConfig.yaml.example VagrantConfig.yaml

DC/OS v1.7はデフォルトでOAuth認証をするようになっているのですが、今回のVagrantの構成はホストオンリーアダプタになっており、各VMからインターネットに接続できず、OAuth認証が通りません。このため設定ファイルを修正し、OAuthを無効化します。

$ vi ./etc/config-1.7.yaml
oauth_enabled: 'false'

これで準備は完了。それではVMを起動します!m1がマスターノード、a1がプライベードノード、m1がパブリックノード、bootがブートストラップノードです。

$ vagrant up m1 a1 p1 boot
...(snip)...
==> boot: DC/OS Installation Complete
==> boot: Web Interface: http://m1.dcos/

状態確認。4つのVMがrunningになっています。

$ vagrant status
Current machine states:

m1                        running (virtualbox)
m2                        not created (virtualbox)
m3                        not created (virtualbox)
a1                        running (virtualbox)
a2                        not created (virtualbox)
a3                        not created (virtualbox)
a4                        not created (virtualbox)
a5                        not created (virtualbox)
a6                        not created (virtualbox)
p1                        running (virtualbox)
p2                        not created (virtualbox)
p3                        not created (virtualbox)
boot                      running (virtualbox)

ホスト側で Webブラウザを開き、http://m1.dcos/にアクセスすると、認証抜き(OAuthを無効化したため)でDC/OS環境の管理画面が表示されます。

DC_OS 3

ホスト側の/etc/hostsの内容。vagrant-hostmanagerによって、DC/OS環境の各VMが追記されています。

$ cat /etc/hosts
## vagrant-hostmanager-start id: 5b1bedb2-ba2d-402c-9fd9-1234567890
192.168.65.111	a1.dcos

192.168.65.50	boot.dcos

192.168.65.90	m1.dcos

192.168.65.60	p1.dcos
192.168.65.60	spring.acme.org oinker.acme.org
## vagrant-hostmanager-end

不要になった環境はデストローイします。

$ vagrant destroy -f

さいごに

クラウド環境を使わずとも、手軽に手元でDC/OS環境を作れるのは便利ですね。実際に分散処理を実行させるにはそれなりのコンピューターリソースが要求されますが、動作を確認したり設定を試したりする分には楽で良いです。