Skip to content

Instantly share code, notes, and snippets.

@mokevnin
Last active December 31, 2015 20:39
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mokevnin/8041479 to your computer and use it in GitHub Desktop.
Save mokevnin/8041479 to your computer and use it in GitHub Desktop.
---
-
hosts: default
vars:
database:
password: my_secret_password
# server_name: "codebattle.me"
erlang:
directory: ~/.kerl/erlangs
version: r16b02
postgresql:
version: 9.1
project_root: /var/www/battle
tasks:
-
name: set locale
lineinfile:
dest=/etc/environment
line='LC_ALL="en_US.UTF-8"'
state=present
backup=yes
-
name: create user
user: name={{ deploy_user }} shell=/bin/bash
-
name: set up auth key
authorized_key: user={{ deploy_user }} key="{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
-
name: apt-get update
apt: update_cache=true cache_valid_time=3600
-
name: install packages
apt: pkg={{ item }} state=installed
with_items:
- curl
- vim
- git
- runit
- gcc
- make
- libncurses5-dev
- python-pycurl
- postgresql-{{ postgresql.version }}
- libpq-dev
- python-psycopg2
-
name: add repositories
apt_repository: repo='ppa:nginx/stable'
tags: [nginx]
-
name: install nginx
apt: pkg=nginx state=installed
tags: [nginx]
-
name: setup kerl
shell:
curl -O https://raw.github.com/spawngrid/kerl/master/kerl
&& chmod +x kerl
&& cp kerl /usr/local/bin
creates=/usr/local/bin/kerl
tags: [erlang]
-
name: build erlang
sudo: true
sudo_user: "{{ deploy_user }}"
shell: kerl build {{ erlang.version | upper }} {{ erlang.version }}
creates=~/.kerl/builds/{{ erlang.version }}
tags: [erlang]
-
name: setup erlang
sudo: true
sudo_user: "{{ deploy_user }}"
shell: kerl install {{ erlang.version }} {{ erlang.directory }}/{{ erlang.version }}
creates={{ erlang.directory }}/{{ erlang.version }}
tags: [erlang]
-
name: update bash_profile (erlang activation)
sudo: true
sudo_user: "{{ deploy_user }}"
lineinfile:
dest=~/.bash_profile
regexp="{{ erlang.directory }}/(.+)/activate"
line=". {{ erlang.directory }}/{{ erlang.version }}/activate"
state=present
backup=yes
insertafter=EOF
create=yes
tags: [erlang]
-
name: install RVM and Ruby
shell: curl -sSL https://get.rvm.io | bash -s stable --ruby --autolibs=enabled
creates=~/.rvm
tags: [ruby]
-
name: update nginx vhost conf
template: src=templates/nginx.j2 dest=/etc/nginx/conf.d/battle.conf
notify:
- reload nginx
tags: [nginx]
-
name: create postgres user
sudo: true
sudo_user: postgres
postgresql_user: name={{ deploy_user }} password={{ database.password }}
tags: [postgres]
-
name: create battle db
sudo: true
sudo_user: postgres
postgresql_db: name={{ deploy_user }}
tags: [postgres]
-
name: create shared directories
file: dest={{ project_root }}/shared/{{ item }} state=directory owner={{ deploy_user }} recurse=yes
tags: [files]
with_items:
- config
- backend
-
name: copy configs
copy: src=templates/{{ item.file }}
dest={{ project_root }}/shared/{{ item.folder }}/{{ item.file }} owner={{ deploy_user }}
tags: [files]
with_items:
- { folder: config, file: database.yml.j2 }
- { folder: backend, file: sys.config.j2 }
handlers:
-
name: restart postgresql
service: name=postgresql state=restarted
-
name: reload nginx
service: name=nginx state=reloaded
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment