Skip to content

Instantly share code, notes, and snippets.

@greenhat
Created February 14, 2016 18:59
Show Gist options
  • Save greenhat/29f9452f2bd2d2ce0a15 to your computer and use it in GitHub Desktop.
Save greenhat/29f9452f2bd2d2ce0a15 to your computer and use it in GitHub Desktop.
---
- hosts: app_servers
user: "{{deploy_user}}"
tasks:
- name: Ensure vendor path exists
file: path="{{vendor_path}}" owner="{{deploy_user}}" group="{{deploy_user}}" state=directory
sudo: yes
notify: restart uwsgi
- name: Upload the SSH key
copy: src=~/.ssh/id_rsa dest=/tmp/id_rsa_deployment mode=600
- name: Configure GIT_SSH script file
copy: dest=/tmp/git_ssh.sh mode=700
content='exec /usr/bin/ssh -o StrictHostKeyChecking=no -i /tmp/id_rsa_deployment "$@"'
- name: Backup PostgreSQL DB data
shell: "python /usr/local/bin/psl_backup_postgresql.py"
sudo: yes
sudo_user: postgres
- name: Checkout app from git repo
git: repo="ssh://git@bitbucket.org/greenden/psl_server.git" dest="{{vendor_path}}" force=yes
update=yes version="{{branch_name_to_deploy}}" accept_hostkey=yes
environment:
GIT_SSH: /tmp/git_ssh.sh
notify: reload uwsgi
- name: Generate app settings file psl_settings.cfg
template: src=templates/psl_settings.cfg dest=/etc/psl_settings.cfg mode=0751
owner=www-data group=www-data
sudo: yes
notify: reload uwsgi
- name: Ensure log path exists
file: path="{{vendor_path}}"/logs owner=www-data group=www-data state=directory
sudo: yes
- name: install PostgreSQL dev environment
apt: pkg=libpq-dev update_cache=yes state=present
sudo: yes
- name: clean pip build cache
command: "rm -rf /tmp/pip-build-root"
sudo: yes
- name: Install requirements via pip
pip: requirements="{{vendor_path}}"/requirements.txt
sudo: yes
notify: reload uwsgi
- name: create celery config for supervisord
template: src=templates/supervisor_celeryd.conf dest=/etc/supervisor/conf.d/celeryd.conf
sudo: yes
notify: reload supervisor
handlers:
- name: reload uwsgi
command: touch "{{vendor_path}}"/serv.py
sudo: yes
notify:
- post-deployment hook
- reload celery
- name: restart uwsgi
service: name=uwsgi state=restarted
sudo: yes
notify:
- post-deployment hook
- reload celery
- name: post-deployment hook
shell: "cd {{vendor_path}} && PSL_SERVER_SETTINGS='/etc/psl_settings.cfg' python -c 'import serv; serv.post_deployment_hook()'"
sudo: yes
sudo_user: www-data
- name: reload supervisor
shell: supervisorctl reread && supervisorctl update
sudo: yes
notify: reload celery
- name: reload celery
command: supervisorctl reload celery
sudo: yes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment