Elasticsearch 用のレシピを書いたりしつつ、Vagrantfile で2台分の VM を立てる設定を書いてみた。
template の elasticsearch.yml.erb の中身は、パッケージに含まれている設定ファイルから下記の部分をテンプレート化しただけ。
cluster.name: <%= node['elasticsearch']['cluster_name'] %>
node.name: <%= node['elasticsearch']['node_name'] %>
Vagrantfile の中身はこんな感じにしてみた。
これで es1 と es2 という VM ができた。ただ、最初に vagrant up
したときに、es2 の途中で動きが止まったように見えて、インストール途中で失敗した様子。
vagrant ssh
でのログインはできたので、VM の中身を見てみたら、Elasticsearch のパッケージインストールはできていなかった。もう一度 vagrant up
してみたら es2 の方へもインストールされ、起動もしてくれた。
まだこれだと Vagrantfile か Chef のレシピに問題があるのかなぁ。。。
この方法だと、es1 と es2 がシリアルに作成され、それぞれが外部サーバから apt-get install しているので、VM のインストールは正直かなり遅い。まぁ、初期インストールが済んでしまえば、次からはそれほど時間もかからないので、こういうものなのかな。
100台の VM を立ち上げる!とかの世界であれば、別のソリューションを考えたほうが良さそうなのは分かった。
あと、この設定だけだと、Elasticsearch がうまくクラスタ化できてない様子。es1 と es2 がそれぞれ master になってしまっている。クラスタ名は同じになっているので、ネットワーク設定がダメなんだな。
今日は時間切れなので明日にでも。
VMに限った話であれば、vagrant cachier pluginは良いかもしれません。<br>http://www.1x1.jp/blog/2014/09/vagrant-cachier-plugin.html<br>2台目からのapt-get installが早くなります。
おー、なるほど、ありがとうございます!