Skip to content

Instantly share code, notes, and snippets.

@ameir
Created July 12, 2016 16:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ameir/0a911d99afb672a3b0519f344c607d8a to your computer and use it in GitHub Desktop.
Save ameir/0a911d99afb672a3b0519f344c607d8a to your computer and use it in GitHub Desktop.
Run chef-client with AWS tags
#!/bin/bash -ex
export HOME=/root
INSTANCE_ID=$(curl -s http://instance-data/latest/meta-data/instance-id)
REGION=$(curl -s http://instance-data/latest/meta-data/placement/availability-zone | sed 's/.$//')
mkdir -vp /tmp/chef ; cd $_
aws ec2 --region $REGION describe-tags --filters "Name=resource-id,Values=$INSTANCE_ID" --output=text | awk -F '\t' -v q=\' '{gsub(/:/,"_",$2); print "TAG_" $2 "=" q$5q}' > instance-tags
. instance-tags
eval $TAG_chef_init
aws s3 cp $s metadata
. metadata
TARBALL=${COOKBOOK_NAME}-${COOKBOOK_VERSION}.tar.gz
aws s3 cp $COOKBOOK_S3_URL .
tar xfz $TARBALL
LOG_PATH="/var/tmp/chef_bootstrap_`date -u +'%F_%H%M'`.log"
LOG_EMAIL=$TAG_Owner
cmd="chef-client -z -r '$r' -E '$e' -l info -L $LOG_PATH"
echo "Running: $cmd"
eval $cmd; return_code=$?
if [[ $return_code -eq 1 ]]; then
tail -n +1 instance-tags $LOG_PATH | mail -s "(Failed) Chef run for $(hostname -f)" -- $LOG_EMAIL
fi
exit $return_code
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment