Helper files for https://gist.github.com/2050769
This repository contains files tailored for bootstrapping, installing and configuring Elasticsearch with Chef Solo on the Ubuntu operating system, as a supplementary material for the Deploying Elasticsearch with Chef Solo tutorial.
After you have downloaded the files from the gist, copy and edit the node configuration:
cp node_ubuntu.json node.json
$EDITOR node.json
Set up the SSH connection according to your environment, eg.:
HOST=<REPLACE WITH YOUR SERVER IP>
KEY=<REPLACE WITH PATH TO YOUR SSH KEY>
USER=ubuntu
PORT=22
SSH_OPTIONS="-o User=$USER -o IdentityFile=$KEY -o Port=$PORT -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
And test that it's working:
ssh $SSH_OPTIONS $HOST "date"
Now, copy the files to the machine and execute the bootstrap script:
scp $SSH_OPTIONS bootstrap_ubuntu.sh node.json solo.rb $HOST:/tmp
time ssh -t $SSH_OPTIONS $HOST "sudo bash /tmp/bootstrap_ubuntu.sh"
Execute the Chef Solo run:
time ssh -t $SSH_OPTIONS $HOST "sudo su - root -c 'chef-solo --node-name elasticsearch-test-ubuntu -j /tmp/node.json'"
Check that the installation and configuration succeeded (you may need to wait couple of minutes until Monit starts):
ssh -t $SSH_OPTIONS $HOST "sudo service elasticsearch status -v"
ssh -t $SSH_OPTIONS $HOST "sudo monit reload && sudo monit status -v"
curl http://USERNAME:PASSWORD@$HOST:8080
Now, you can eg. test that Monit is, in fact, working. Kill the Elasticsearch process:
ssh -t $SSH_OPTIONS $HOST "cat '/usr/local/var/run/elasticsearch/elasticsearch_test_ubuntu.pid' | xargs -0 sudo kill -9"
Wait couple of minutes and check the status:
ssh -t $SSH_OPTIONS $HOST "sudo monit reload && sudo monit status -v"
See the original gist for more information.
http://www.elasticsearch.org/tutorials/2012/03/21/deploying-elasticsearch-with-chef-solo.html
I hit a bunch of errors running this gist. First, a whole bunch of dependencies seem not to be properly included in the elasticsearch recipe. I needed to add them all manually in the bootstrap.sh.
Second, monit just doesn't work. I had to disable the recipe to get the whole thing to install.
Adding these lines to the bootstrap installs the missing dependencies:
if [ ! -d /var/chef-solo/cookbooks/windows ]; then
git clone git://github.com/opscode-cookbooks/windows.git /var/chef-solo/cookbooks/windows
else
cd /var/chef-solo/cookbooks/windows
git fetch
git reset origin/master --hard
fi
if [ ! -d /var/chef-solo/cookbooks/chef_handler ]; then
git clone git://github.com/opscode-cookbooks/chef_handler.git /var/chef-solo/cookbooks/chef_handler
else
cd /var/chef-solo/cookbooks/chef_handler
git fetch
git reset origin/master --hard
fi
if [ ! -d /var/chef-solo/cookbooks/bluepill ]; then
git clone git://github.com/opscode-cookbooks/bluepill.git /var/chef-solo/cookbooks/bluepill
else
cd /var/chef-solo/cookbooks/bluepill
git fetch
git reset origin/master --hard
fi
if [ ! -d /var/chef-solo/cookbooks/rsyslog ]; then
git clone git://github.com/opscode-cookbooks/rsyslog.git /var/chef-solo/cookbooks/rsyslog
else
cd /var/chef-solo/cookbooks/rsyslog
git fetch
git reset origin/master --hard
fi
if [ ! -d /var/chef-solo/cookbooks/build-essential ]; then
git clone git://github.com/opscode-cookbooks/build-essential.git /var/chef-solo/cookbooks/build-essential
else
cd /var/chef-solo/cookbooks/build-essential
git fetch
git reset origin/master --hard
fi
if [ ! -d /var/chef-solo/cookbooks/runit ]; then
git clone git://github.com/opscode-cookbooks/runit.git /var/chef-solo/cookbooks/runit
else
cd /var/chef-solo/cookbooks/runit
git fetch
git reset origin/master --hard
fi
if [ ! -d /var/chef-solo/cookbooks/yum ]; then
git clone git://github.com/opscode-cookbooks/yum.git /var/chef-solo/cookbooks/yum
else
cd /var/chef-solo/cookbooks/yum
git fetch
git reset origin/master --hard
fi