Vagrant環境にpuppet moduleを利用してさくっとelasticsearchをインストールする
Vagrantで立ち上げたVMにいろいろ環境整えるとき、普段スクラッチでpuppet manifest書いてたんだけど、面倒なのでpuppet module使いたいなと思って調べた。本番環境でガッツリ使いたいとかならちゃんとmanifestをアレンジして管理したほうが良いと思うけど、vagrantで検証用環境作るためならpuppet moduleで良いと思ってる。
puppet moduleの使い方については以下に載っている。
Installing Modules — Documentation — Puppet Labs http://docs.puppetlabs.com/puppet/3/reference/modules_installing.html
VM側のpuppetのmoduleにさくっとelasticsearchを入れて、起動することを試みる。Vagrantfileはこんな感じ。今回はCentOSで。
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "centos64" config.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210.box" config.vm.define :search do |search_config| search_config.vm.hostname = "search01.vm.local" search_config.vm.network :private_network, ip: "192.168.10.114" search_config.vm.network :forwarded_port, guest: 9200, host: 9200, searchuto_correct: true search_config.vm.network :forwarded_port, guest: 9300, host: 9300, auto_correct: true end end
$ vagrant up search
でVMを起動できる。
ちなみにpuppetを使えるようになってるミニマムなboxは以下のページに載ってる。puppetlabs提供。
Puppet Vagrant Boxes http://puppet-vagrant-boxes.puppetlabs.com/
必須ではないけど、便利のためssh-config
しておく。
$ vagrant ssh-config search --host search01.vm.local >> ~/.ssh/config
これでssh search01.vm.local
でVMにsshできる。では早速manifestを書いていく。といってもすぐに終わる。
manifests/search.pp
include search
roles/search/manifests/init.pp
class search { class { 'elasticsearch': package_url => 'https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.11.noarch.rpm', java_install => true, } }
package_url
は http://www.elasticsearch.org/overview/elkdownloads/ にrpmのURLが載っているので都度使いたいのを選ぶといい。今回は0.90.11で。ついでにjava_install
を指定しておくと勝手にJavaもいれてくれる。このへんの説明は https://github.com/elasticsearch/puppet-elasticsearch をみると載ってる。
実際にマニフェストを適用する。
# puppet moduleであるelasticsearch-elasticsearchをインストール $ ssh search01.vm.local "cd /vagrant && sudo puppet module install elasticsearch-elasticsearch" # manifestの適用を行う $ ssh search01.vm.local "cd /vagrant && sudo puppet apply --modulepath=/etc/puppet/modules:roles manifests/search.pp"
これでelasticsearchが起動する。以下のコマンドでhost OS側から動作を確認できる。
-> % curl http://192.168.10.114:9200/ { "ok" : true, "status" : 200, "name" : "Wind Dancer", "version" : { "number" : "0.90.11", "build_hash" : "11da1bacf39cec400fd97581668acb2c5450516c", "build_timestamp" : "2014-02-03T15:27:39Z", "build_snapshot" : false, "lucene_version" : "4.6" }, "tagline" : "You Know, for Search" }
うまく設定すればclusterの構築も手軽にできるはず。