mirror of https://github.com/hashicorp/consul
parent
835b7ad730
commit
993d8f6f7e
@ -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