See http://docs.ansible.com/intro_installation.html
$ ansible-playbook -K -k servers.yml
See https://github.com/mislav/git-deploy
$ git push production master
See http://docs.ansible.com/intro_installation.html
$ ansible-playbook -K -k servers.yml
See https://github.com/mislav/git-deploy
$ git push production master
# config file for ansible -- http://ansible.github.com | |
# Set ANSIBLE_CONFIG environment variable to use this | |
# See http://ansible.github.com/examples.html#configuration-defaults | |
[defaults] | |
hostfile = ansible_hosts | |
remote_user = deploy |
[servers] | |
192.168.0.13 |
deploy ALL=(ALL) NOPASSWD: ALL |
server { | |
listen 80 default_server; | |
listen [::]:80 default_server ipv6only=on; | |
server_name server.example.com; | |
passenger_enabled on; | |
passenger_spawn_method direct; | |
passenger_min_instances 2; | |
rails_app_spawner_idle_time 0; | |
rails_env production; | |
root /home/deploy/app/public; | |
# redirect server error pages to the static page /50x.html | |
error_page 500 502 503 504 /50x.html; | |
location = /50x.html { | |
root html; | |
} | |
} |
--- | |
- hosts: servers | |
sudo: true | |
vars: | |
rbenv: | |
env: user | |
version: v0.4.0 | |
ruby_version: 2.1.5 | |
roles: | |
- role: zzet.rbenv | |
rbenv_users: | |
- { name: "deploy", home: "/home/deploy", comment: "Deploy user" } | |
- role: abtris.nginx-passenger | |
- role: 'ssilab.locales' | |
locale: 'nb_NO' | |
encoding: 'UTF-8' | |
locales_user: 'deploy' | |
locale_language_packs: | |
- 'language-pack-nb' | |
- 'language-pack-nb-base' | |
tags: | |
- language | |
tasks: | |
- name: Set passwordless sudo for user deploy | |
copy: src=deploy dest=/etc/sudoers.d/deploy | |
tags: env | |
- name: Give www-data access to deploy group | |
user: name=www-data groups=deploy append=yes | |
- name: Install software | |
apt: pkg={{ item }} state=present | |
with_items: | |
- vim | |
- build-essential | |
- autoconf | |
- libssl-dev | |
- libyaml-dev | |
- libreadline6 | |
- libreadline6-dev | |
- zlib1g | |
- zlib1g-dev | |
- mdbtools | |
- memcached | |
- redis-server | |
- sqlite3 | |
- git-core | |
- curl | |
- zlib1g-dev | |
- build-essential | |
- libssl-dev | |
- libreadline-dev | |
- libyaml-dev | |
- libsqlite3-dev | |
- sqlite3 | |
- libxml2-dev | |
- libxslt1-dev | |
- libcurl4-openssl-dev | |
- python-software-properties | |
- libsqlite3-dev | |
- freetds-common | |
- freetds-dev | |
- mongodb | |
- libreoffice | |
- smbclient | |
- wkhtmltopdf | |
- mariadb-client | |
- mariadb-common | |
- libmariadbclient-dev | |
- mariadb-server | |
- ruby-dev | |
- ack-grep | |
- name: Configure nginx sites | |
copy: src=nginx-default-site dest=/etc/nginx/sites-available/default owner=www-data group=www-data | |
notify: restart nginx | |
tags: | |
- web | |
- name: Enable nginx sites | |
file: src=/etc/nginx/sites-available/default dest=/etc/nginx/sites-enabled/default state=link | |
notify: restart nginx | |
tags: | |
- web | |
- name: Configure Sidekiq service | |
copy: src=sidekiq.conf dest=/etc/init/sidekiq.conf owner=root group=root mode="622" | |
tags: env | |
- name: set up gemrc | |
lineinfile: "dest='/home/deploy/.gemrc' state=present regexp='^gem' line='gem: --no-ri --no-rdoc'" | |
tags: env | |
- name: Install bundler gem | |
command: /home/deploy/.rbenv/versions/2.1.5/bin/gem install bundler | |
sudo: no | |
args: | |
chdir: /home/deploy | |
creates: /home/deploy/.rbenv/versions/2.1.5/bin/bundle | |
tags: env | |
- name: Set Rails environment | |
lineinfile: dest=/home/deploy/.bashrc state=present regexp="^export RAILS_ENV" line="export RAILS_ENV=production" | |
tags: env | |
- name: Set bx alias for bundle exec | |
lineinfile: dest=/home/deploy/.bashrc state=present regexp="alias bx" line="alias bx=\"bundle exec\"" | |
tags: env | |
handlers: | |
- name: restart nginx | |
service: name=nginx state=restarted | |
- name: reconfigure locales | |
command: dpkg-reconfigure locales |
# /etc/init/sidekiq.conf - Sidekiq config | |
description "Sidekiq Background Worker" | |
# no "start on", we don't want to automatically start | |
stop on (stopping workers or runlevel [06]) | |
# change to match your deployment user | |
setuid deploy | |
setgid deploy | |
env HOME=/home/deploy | |
respawn | |
respawn limit 3 30 | |
# TERM is sent by sidekiqctl when stopping sidekiq. Without declaring these as | |
# normal exit codes, it just respawns. | |
normal exit 0 TERM | |
script | |
# this script runs in /bin/sh by default | |
# respawn as bash so we can source in rbenv | |
exec /bin/bash <<'EOT' | |
source /home/deploy/.profile | |
source /etc/profile.d/rbenv.sh | |
cd /home/deploy/app | |
exec bundle exec sidekiq -c 3 -e production -L /home/deploy/gd/log/sidekiq.log | |
EOT | |
end script |