While RightScale’s built-in scripts make it simple to deploy code to an EC2 instance, they often need some tweaking to work correctly (i.e. the current version of app::do_update_code simply pulls down code, it doesn’t restart Apache or recompress assets).
The following is an example RightScript that utilizes a temporary SSH key, GIT_SSH and a sync script to automate the deployment process.
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 -e | |
# switch to the attachment directory | |
cd $RS_ATTACH_DIR | |
# move the sync script | |
mv sync.sh /home/rightscale/.ssh/sync.sh | |
# make script executable | |
chmod u+x /home/rightscale/.ssh/sync.sh | |
# create temporary SSH key | |
cat > "/home/rightscale/.ssh/id_rsa" << EOF | |
$GIT_SSH_KEY | |
EOF | |
# chmod to 600 | |
chmod 600 /home/rightscale/.ssh/id_rsa | |
# set GIT_SSH | |
export GIT_SSH=/home/rightscale/.ssh/sync.sh | |
# clone the repo | |
git clone –depth 1 git@bitbucket.org:myrepo/reponame.git /home/rightscale/$APPLICATION | |
# recompress assets | |
python /home/webapps/$APPLICATION/manage.py collectstatic –noinput -i css -i js | |
python /home/webapps/$APPLICATION/manage.py compress | |
# stop apache | |
service apache2 stop | |
# remove the current app directory | |
rm -rf /home/webapps/$APPLICATION | |
# move the new app directory into place | |
mv /home/rightscale/$APPLICATION /home/webapps/$APPLICATION | |
# restart apache | |
service apache2 start | |
# remove temporary SSH key | |
rm /home/rightscale/.ssh/id_rsa | |
rm /home/rightscale/.ssh/sync.sh |
sync.sh (attached to above RightScript)
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 -e | |
/usr/bin/env ssh -q -2 -o "StrictHostKeyChecking=no" -i "/home/rightscale/.ssh/id_rsa" $1 $2 |