mirror of https://github.com/hashicorp/consul
Sathiya Shunmugasundaram
10 years ago
7 changed files with 113 additions and 1 deletions
@ -0,0 +1,36 @@
|
||||
#!/bin/bash |
||||
set -e |
||||
|
||||
# Read the address to join from the file we provisioned |
||||
JOIN_ADDRS=$(cat /tmp/consul-server-addr | tr -d '\n') |
||||
|
||||
echo "Installing dependencies..." |
||||
yum update -y |
||||
yum install -y unzip wget |
||||
|
||||
echo "Fetching Consul..." |
||||
cd /tmp |
||||
wget https://dl.bintray.com/mitchellh/consul/0.5.2_linux_amd64.zip -O consul.zip |
||||
|
||||
echo "Installing Consul..." |
||||
unzip consul.zip >/dev/null |
||||
chmod +x consul |
||||
mv consul /usr/local/bin/consul |
||||
mkdir -p /etc/consul.d |
||||
mkdir -p /mnt/consul |
||||
mkdir -p /etc/service |
||||
|
||||
#Enable consul port in iptables |
||||
echo "Allow port 8301 in iptables" |
||||
iptables -I INPUT -s 0/0 -p tcp --dport 8301 -j ACCEPT |
||||
|
||||
# Setup the join address |
||||
cat >/tmp/consul-join << EOF |
||||
export CONSUL_JOIN="${JOIN_ADDRS}" |
||||
EOF |
||||
mv /tmp/consul-join /etc/service/consul-join |
||||
chmod 0644 /etc/service/consul-join |
||||
|
||||
echo "Installing Upstart service..." |
||||
mv /tmp/upstart.conf /etc/init/consul.conf |
||||
mv /tmp/upstart-join.conf /etc/init/consul-join.conf |
@ -0,0 +1,15 @@
|
||||
#!/bin/bash |
||||
set -e |
||||
|
||||
# Read from the file we created |
||||
SERVER_COUNT=$(cat /tmp/consul-server-count | tr -d '\n') |
||||
|
||||
# Write the flags to a temporary file |
||||
cat >/tmp/consul_flags << EOF |
||||
export CONSUL_FLAGS="-server -bootstrap-expect=${SERVER_COUNT} -data-dir=/mnt/consul" |
||||
EOF |
||||
|
||||
# Write it to the full service file |
||||
mv /tmp/consul_flags /etc/service/consul |
||||
chown root:root /etc/service/consul |
||||
chmod 0644 /etc/service/consul |
@ -0,0 +1,5 @@
|
||||
#!/bin/bash |
||||
set -e |
||||
|
||||
echo "Starting Consul..." |
||||
start consul |
@ -0,0 +1,25 @@
|
||||
description "Join the consul cluster" |
||||
|
||||
start on started consul |
||||
stop on stopped consul |
||||
|
||||
task |
||||
|
||||
script |
||||
if [ -f "/etc/service/consul-join" ]; then |
||||
. /etc/service/consul-join |
||||
fi |
||||
|
||||
# Keep trying to join until it succeeds |
||||
set +e |
||||
while :; do |
||||
logger -t "consul-join" "Attempting join: ${CONSUL_JOIN}" |
||||
/usr/local/bin/consul join \ |
||||
${CONSUL_JOIN} \ |
||||
>>/var/log/consul-join.log 2>&1 |
||||
[ $? -eq 0 ] && break |
||||
sleep 5 |
||||
done |
||||
|
||||
logger -t "consul-join" "Join success!" |
||||
end script |
@ -0,0 +1,26 @@
|
||||
description "Consul agent" |
||||
|
||||
start on runlevel [2345] |
||||
stop on runlevel [!2345] |
||||
|
||||
respawn |
||||
# This is to avoid Upstart re-spawning the process upon `consul leave` |
||||
normal exit 0 INT |
||||
|
||||
script |
||||
if [ -f "/etc/service/consul" ]; then |
||||
. /etc/service/consul |
||||
fi |
||||
|
||||
# Make sure to use all our CPUs, because Consul can block a scheduler thread |
||||
export GOMAXPROCS=`nproc` |
||||
|
||||
# Get the public IP |
||||
BIND=`ifconfig eth0 | grep "inet addr" | awk '{ print substr($2,6) }'` |
||||
|
||||
exec /usr/local/bin/consul agent \ |
||||
-config-dir="/etc/consul.d" \ |
||||
-bind=$BIND \ |
||||
${CONSUL_FLAGS} \ |
||||
>>/var/log/consul.log 2>&1 |
||||
end script |
Loading…
Reference in new issue