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をインストールします。またそのために必要だったffiもgemコマンドでインストールしました。
$ 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環境の管理画面が表示されます。
ホスト側の/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環境を作れるのは便利ですね。実際に分散処理を実行させるにはそれなりのコンピューターリソースが要求されますが、動作を確認したり設定を試したりする分には楽で良いです。