Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save soumentrivedi/82b044f7d075a272ad5f76db73d70815 to your computer and use it in GitHub Desktop.
Save soumentrivedi/82b044f7d075a272ad5f76db73d70815 to your computer and use it in GitHub Desktop.
#!/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