This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
export DOCKERCLOUD_APIKEY="YOUR-API-KEY" | |
export DOCKERCLOUD_USER="YOUR-USERNAME" | |
#Setup environment variables & aliases | |
if [ -z "$S3_BUCKET" ]; then | |
S3_BUCKET="S3-BUCKET-NAME" | |
fi | |
# Installing docker-cloud-cli using pip | |
pip install docker-cloud --upgrade | |
aws s3 sync s3://${S3_BUCKET}/opt/ /opt/ | |
echo "* * * * * root aws s3 sync s3://${S3_BUCKET}/opt/ /opt/" > /etc/cron.d/10s3cron | |
if [ ! -d /etc/dockercloud ] | |
then | |
mkdir -p /etc/dockercloud | |
fi | |
echo "$DOCKERCLOUD_APIKEY" > /etc/dockercloud/api_key | |
echo "$DOCKERCLOUD_USER" > /etc/dockercloud/api_user | |
#Register with DockerCloud | |
docker-cloud node byo | sed -n 4p | source /dev/stdin | |
sleep 15 | |
#Retrieve DockerCloud ID from agent.conf | |
export DOCKERCLOUD_UUID=$(cat /etc/dockercloud/agent/dockercloud-agent.conf | jq -r .UUID) | |
echo "--== Now waiting for DockerCloud deployment of Node $DOCKERCLOUD_UUID to complete ==--" | |
timeout 10m bash -c "while [ \"\$(docker-cloud node inspect $DOCKERCLOUD_UUID | jq -r .state)\" != \"Deployed\" ]; do sleep 10; done;" #DOCKERCLOUD_UUID is purposefully not escaped | |
if [ $? != 0 ]; then echo "Node never came up!"; shutdown -h now; fi | |
#Adding capability for Customised DOCKER_OPTS | |
# 1. Fix for Docker v1.9.1 https://github.com/docker/docker/issues/17653 | |
# 2. http://docs.master.dockerproject.org/reference/commandline/cli/ | |
# Look for "Options for the native execdriver" | |
# RedHat recommendation: http://developerblog.redhat.com/2014/09/30/overview-storage-scalability-docker/ | |
/sbin/service dockercloud-agent stop | |
sed -i.bak 's/\"DockerOpts\":\"\"/\"DockerOpts\":\"--exec-opt native.cgroupdriver=cgroupfs --storage-opt dm.datadev=\/dev\/VolGroup_docker\/lv_docker --storage-opt dm.metadatadev=\/dev\/VolGroup_docker\/lv_metadata --storage-opt dm.override_udev_sync_check=true\"/g' /etc/dockercloud/agent/dockercloud-agent.conf | |
rm -rf /var/lib/docker # This is important for DockerCloud to take new Storage optimisation settings and redeploy system containers | |
/sbin/service dockercloud-agent start | |
while [ $(docker-cloud node inspect $DOCKERCLOUD_UUID | jq -r .state) == "Unreachable" ]; do service dockercloud-agent restart; sleep 15; done; | |
# Adding tags for the node | |
chmod u+x /opt/bootstrap-scripts/ec2-metadata | |
INSTANCE_ID=$(/opt/bootstrap-scripts/ec2-metadata --instance-id | awk '{ print $2; }') | |
EC2_TAGS=$(aws ec2 describe-tags --filters "Name=resource-id,Values=$INSTANCE_ID" --region=eu-west-1 --output json | jq -r '.Tags[].Value' | grep -v 'arn:' | grep -v 'None') | |
for TAG in $EC2_TAGS | |
do | |
tags="$tags -t $TAG" | |
done | |
docker-cloud tag add $tags $DOCKERCLOUD_UUID; | |
/sbin/chkconfig dockercloud-agent on | |
# Starting the dockercloudnode service - Required when terminating instances | |
/sbin/service dockercloudnode start |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment