この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
Elasticのブログにこんな記事が上がってました。
ElasticがAnsibleのPlaybookを提供していて、これを使うと簡単にElasticsearchが構築できるとのこと。これをMacBook上のboot2dockerに対してやってみました!
やってみた
まずはElasticのGithubにあるPlaybookをcloneします。
$ mkdir ./src/github.com/elastic/
$ cd ./src/github.com/elastic/
$ git clone https://github.com/elastic/ansible-elasticsearch-example.git
playbook.ymlの内容はこんな感じ。超シンプルです。
---
- hosts: nodes
roles:
- { role: elasticsearch, es_instance_name: "node1", es_heap_size: "1g", es_config: {network.host: "_eth0_", discovery.zen.ping.unicast.hosts: "ansible-test:9300", http.port: 9200, transport.tcp.port: 9300, node.data: false, node.master: true, bootstrap.mlockall: true } }
- { role: elasticsearch, es_instance_name: "node2", es_heap_size: "1g", es_config: {network.host: "_eth0_", discovery.zen.ping.unicast.hosts: "ansible-test:9300", http.port: 9201, transport.tcp.port: 9301, node.data: true, node.master: true, bootstrap.mlockall: true } }
vars:
es_cluster_name: test-cluster
次にRoleファイルをcloneします。実際の構築の手続きはこちらのRoleの中で定義されており、マスターノードとデータノードによって使い分けられます。
$ cd ./ansible-elasticsearch-example/
$ git clone https://github.com/elastic/ansible-elasticsearch.git roles/elasticsearch
boot2dockerをスタートします。
$ boot2docker start
$ eval "$(boot2docker shellinit)"
このAnsible-Playbookの動作確認用に提供されているDockerイメージをPullします。
$ docker pull gingerwizard/ansible-test
そしてDockerコンテナを起動。ここで指定されている名前「ansible-test」は変更可能ですが、その場合はplaybook.ymlも修正する必要があります。
$ docker run -d -P --name ansible-test -h ansible-test gingerwizard/ansible-test
Dockerコンテナの起動確認。合わせてSSHポート(ここでは32771/tcp)、Elasticsearchポート(ここでは32773/tcp)を確認しておきます。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1bf7492f2106 gingerwizard/ansible-test "/usr/sbin/sshd -D" 3 seconds ago Up 1 seconds 0.0.0.0:32773->22/tcp, 0.0.0.0:32772->9200/tcp, 0.0.0.0:32771->9201/tcp ansible-test
boot2dockerのIPアドレスを確認します。
$ echo $(boot2docker ip)
192.168.59.103
hostsファイルを修正し、boot2dockerのIPアドレスとSSHポートを設定します。
$ vi hosts
[nodes]
ansible-test ansible_ssh_host=192.168.59.103 ansible_ssh_port=32773
ではansible-playbookを実行!なお、このDockerコンテナのrootユーザーのパスワードは「Ansible!」です・
$ ansible-playbook playbook.yml -u root -i hosts --ask-pass
(..snip..)
PLAY RECAP ********************************************************************
ansible-test : ok=69 changed=28 unreachable=0 failed=0
それではElasticsearchポートにcurlコマンドで接続してみます。
$ curl http://192.168.59.103:32772/
{
"name" : "ansible-test-node1",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.1.0",
"build_hash" : "72cd1f1a3eee09505e036106146dc1949dc5dc87",
"build_timestamp" : "2015-11-18T22:40:03Z",
"build_snapshot" : false,
"lucene_version" : "5.3.1"
},
"tagline" : "You Know, for Search"
}
ばっちりElsaticsearchが構築されています!
さいごに
ここで提供されているものはあくまでサンプルですが、少しカスタマイズすれば自環境に合わせて使えそうです!