taperole 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +5 -0
- data/.tape/ansible.cfg +4 -0
- data/CONTRIBUTING.md +22 -0
- data/README.md +100 -0
- data/Vagrantfile +26 -0
- data/ansible.cfg +2 -0
- data/bin/tape +81 -0
- data/id_rsa_sb_basebox +27 -0
- data/lib/tape/ansible_runner.rb +84 -0
- data/lib/tape/installer.rb +154 -0
- data/lib/tape/qemu_provisioner.rb +167 -0
- data/lib/tape/vagrant_provisioner.rb +42 -0
- data/lib/tape.rb +76 -0
- data/requirements.yml +16 -0
- data/roles/after_deploy/tasks/main.yml +1 -0
- data/roles/backend_checkout/tasks/main.yml +21 -0
- data/roles/backend_config/defaults/main.yml +1 -0
- data/roles/backend_config/tasks/main.yml +49 -0
- data/roles/backend_config/templates/database.yml.j2 +8 -0
- data/roles/backend_config/templates/env_config.yml.j2 +2 -0
- data/roles/backend_install_essentials/meta/main.yml +5 -0
- data/roles/backend_install_essentials/tasks/main.yml +24 -0
- data/roles/backend_install_essentials/templates/memcached.j2 +7 -0
- data/roles/database_load/defaults/main.yml +3 -0
- data/roles/database_load/meta/main.yml +3 -0
- data/roles/database_load/tasks/db_reset.yml +14 -0
- data/roles/database_load/tasks/main.yml +21 -0
- data/roles/delayed_job/defaults/main.yml +2 -0
- data/roles/delayed_job/library/sudo_upstart +101 -0
- data/roles/delayed_job/tasks/main.yml +35 -0
- data/roles/delayed_job/templates/dj_runner_upstart.j2 +17 -0
- data/roles/deployer_user/files/id_rsa_digital_ocean.pub +1 -0
- data/roles/deployer_user/tasks/keys.yml +19 -0
- data/roles/deployer_user/tasks/main.yml +18 -0
- data/roles/frontend_deploy/handlers/main.yml +2 -0
- data/roles/frontend_deploy/tasks/main.yml +8 -0
- data/roles/general/meta/main.yml +3 -0
- data/roles/general/tasks/basic_packages.yml +3 -0
- data/roles/general/tasks/main.yml +6 -0
- data/roles/general/tasks/swapfile.yml +21 -0
- data/roles/monit_activate/tasks/main.yml +2 -0
- data/roles/monit_install/tasks/main.yml +19 -0
- data/roles/monit_install/templates/web_interface.j2 +2 -0
- data/roles/nginx/handlers/main.yml +2 -0
- data/roles/nginx/tasks/main.yml +30 -0
- data/roles/nginx/templates/nginx_monit.j2 +3 -0
- data/roles/nginx/templates/nginx_unicorn.j2 +55 -0
- data/roles/postgres/meta/main.yml +15 -0
- data/roles/redis/tasks/main.yml +15 -0
- data/roles/redis/templates/redis.j2 +10 -0
- data/roles/sidekiq/defaults/main.yml +2 -0
- data/roles/sidekiq/meta/main.yml +3 -0
- data/roles/sidekiq/tasks/main.yml +19 -0
- data/roles/sidekiq/templates/sidekiq.j2 +4 -0
- data/roles/unicorn_activate/defaults/main.yml +3 -0
- data/roles/unicorn_activate/tasks/main.yml +25 -0
- data/roles/unicorn_install/tasks/main.yml +24 -0
- data/roles/unicorn_install/templates/unicorn.rb.j2 +47 -0
- data/roles/unicorn_install/templates/unicorn_init.j2 +70 -0
- data/roles/unicorn_install/templates/unicorn_monit.j2 +5 -0
- data/taperole.gemspec +11 -0
- data/templates/base/deploy.example.yml +17 -0
- data/templates/base/hosts.example +7 -0
- data/templates/base/omnibox.example.yml +25 -0
- data/templates/base/tape_vars.example.yml +13 -0
- data/templates/static_html/deploy.example.yml +12 -0
- data/templates/static_html/omnibox.example.yml +15 -0
- data/templates/static_html/tape_vars.example.yml +7 -0
- data/vars/defaults.yml +31 -0
- metadata +117 -0
@@ -0,0 +1,55 @@
|
|
1
|
+
{% if be_app_repo is defined %}
|
2
|
+
upstream unicorn {
|
3
|
+
server unix:{{unicorn_sockfile}} fail_timeout=0;
|
4
|
+
}
|
5
|
+
{% endif %}
|
6
|
+
|
7
|
+
server {
|
8
|
+
listen 80 default deferred;
|
9
|
+
|
10
|
+
# server_name example.com;
|
11
|
+
|
12
|
+
{% if fe_app_local_path is defined%}
|
13
|
+
root {{ fe_app_path }};
|
14
|
+
{% else %}
|
15
|
+
root {{ be_app_path }}/public;
|
16
|
+
{% endif %}
|
17
|
+
|
18
|
+
if (-f $document_root/system/maintenance.html) {
|
19
|
+
return 503;
|
20
|
+
}
|
21
|
+
error_page 503 @maintenance;
|
22
|
+
location @maintenance {
|
23
|
+
rewrite ^(.*)$ /system/maintenance.html last;
|
24
|
+
break;
|
25
|
+
}
|
26
|
+
|
27
|
+
location ^~ /assets/ {
|
28
|
+
gzip_static on;
|
29
|
+
expires max;
|
30
|
+
add_header Cache-Control public;
|
31
|
+
}
|
32
|
+
|
33
|
+
{% if be_app_repo is defined %}
|
34
|
+
try_files $uri/index.html $uri @unicorn;
|
35
|
+
location @unicorn {
|
36
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
37
|
+
proxy_set_header Host $http_host;
|
38
|
+
proxy_redirect off;
|
39
|
+
proxy_pass http://unicorn;
|
40
|
+
}
|
41
|
+
{% endif %}
|
42
|
+
|
43
|
+
error_page 500 502 503 504 /500.html;
|
44
|
+
client_max_body_size 4G;
|
45
|
+
keepalive_timeout 10;
|
46
|
+
|
47
|
+
if (-f $document_root/system/maintenance.html) {
|
48
|
+
return 503;
|
49
|
+
}
|
50
|
+
error_page 503 @maintenance;
|
51
|
+
location @maintenance {
|
52
|
+
rewrite ^(.*)$ /system/maintenance.html last;
|
53
|
+
break;
|
54
|
+
}
|
55
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
dependencies:
|
3
|
+
- role: lxhunter.apt
|
4
|
+
- role: ANXS.postgresql
|
5
|
+
postgresql_databases:
|
6
|
+
- name: "{{ app_name }}_{{ be_app_env }}"
|
7
|
+
postgresql_users:
|
8
|
+
- name: deployer
|
9
|
+
pass: "{{ database_password }}"
|
10
|
+
encrypted: yes
|
11
|
+
postgresql_user_privileges:
|
12
|
+
- name: deployer
|
13
|
+
db: "{{ app_name }}_{{ be_app_env }}"
|
14
|
+
role_attr_flags: CREATEDB,LOGIN,REPLICATION,SUPERUSER
|
15
|
+
postgresql_ext_install_dev_headers: yes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
- name: Get PPA for latest Redis
|
2
|
+
apt_repository: repo='ppa:rwky/redis' state=present
|
3
|
+
|
4
|
+
- name: Install Redis
|
5
|
+
apt: name=redis-server state=latest
|
6
|
+
|
7
|
+
- name: Register with monit
|
8
|
+
template: src=redis.j2
|
9
|
+
dest=/etc/monit/conf.d/redis
|
10
|
+
mode=u=rw,g=r,o=r
|
11
|
+
register: redis_monit_config
|
12
|
+
|
13
|
+
- name: Reload Monit
|
14
|
+
command: bash -lc "monit reload"
|
15
|
+
when: redis_monit_config.changed
|
@@ -0,0 +1,10 @@
|
|
1
|
+
check process redis-server
|
2
|
+
with pidfile "/var/run/redis/redis.pid"
|
3
|
+
start program = "/etc/init.d/redis-server start"
|
4
|
+
stop program = "/etc/init.d/redis-server stop"
|
5
|
+
if 2 restarts within 3 cycles then timeout
|
6
|
+
if totalmem > 100 Mb then alert
|
7
|
+
if children > 255 for 5 cycles then stop
|
8
|
+
if cpu usage > 95% for 3 cycles then restart
|
9
|
+
if failed host 127.0.0.1 port 6379 then restart
|
10
|
+
if 5 restarts within 5 cycles then timeout
|
@@ -0,0 +1,19 @@
|
|
1
|
+
- name: Register with monit
|
2
|
+
template: src=sidekiq.j2
|
3
|
+
dest=/etc/monit/conf.d/sidekiq
|
4
|
+
mode=u=rw,g=r,o=r
|
5
|
+
register: sidekiq_monit_config
|
6
|
+
|
7
|
+
- name: Reload Monit
|
8
|
+
command: bash -lc "monit reload"
|
9
|
+
when: sidekiq_monit_config.changed
|
10
|
+
|
11
|
+
- name: Stop sidekiq
|
12
|
+
remote_user: "{{deployer_user.name}}"
|
13
|
+
command: bash -lc "sudo monit stop sidekiq"
|
14
|
+
tags: [be_deploy, unicorn_stop]
|
15
|
+
|
16
|
+
- name: Start sidekiq
|
17
|
+
remote_user: "{{deployer_user.name}}"
|
18
|
+
command: bash -lc "sudo monit start sidekiq"
|
19
|
+
tags: [be_deploy, unicorn_start]
|
@@ -0,0 +1,25 @@
|
|
1
|
+
- name: Ensure tmp dir present for unicorn pids
|
2
|
+
file: state=directory path={{be_app_path}}/tmp/unicorn owner={{ deployer_user.name }}
|
3
|
+
tags: [be_deploy]
|
4
|
+
|
5
|
+
- name: Ensure unicorn is running
|
6
|
+
remote_user: "{{ deployer_user.name }}"
|
7
|
+
command: bash -lc "sudo monit start unicorn"
|
8
|
+
tags: [be_deploy,unicorn_start]
|
9
|
+
|
10
|
+
- name: Restart Unicorn
|
11
|
+
remote_user: "{{ deployer_user.name }}"
|
12
|
+
command: bash -lc "sudo monit restart unicorn"
|
13
|
+
tags: [unicorn_restart,be_deploy]
|
14
|
+
|
15
|
+
- name: Ensure unicorn is stopped
|
16
|
+
remote_user: "{{ deployer_user.name }}"
|
17
|
+
command: bash -lc "sudo monit restart unicorn"
|
18
|
+
when: kill_unicorn
|
19
|
+
tags: [unicorn_stop]
|
20
|
+
|
21
|
+
- name: Force stop unicorn
|
22
|
+
remote_user: "{{ deployer_user.name }}"
|
23
|
+
command: bash -lc "service unicorn_{{ app_name }} stop"
|
24
|
+
when: kill_unicorn
|
25
|
+
tags: [unicorn_force_stop]
|
@@ -0,0 +1,24 @@
|
|
1
|
+
- name: Install unicorn init.d script
|
2
|
+
template: src=unicorn_init.j2
|
3
|
+
dest=/etc/init.d/unicorn_{{app_name}}
|
4
|
+
mode=u=rw,g=rx,o=rx
|
5
|
+
|
6
|
+
- name: register unicorn init.d script
|
7
|
+
command: initctl reload-configuration
|
8
|
+
|
9
|
+
- name: Set up unicorn log dir
|
10
|
+
file: path={{be_app_path}}/log state=directory owner=deployer
|
11
|
+
|
12
|
+
- name: Install unicorn config
|
13
|
+
template: src=unicorn.rb.j2
|
14
|
+
dest={{be_app_path}}/config/unicorn.rb
|
15
|
+
|
16
|
+
- name: Register monit config files
|
17
|
+
template: src=unicorn_monit.j2
|
18
|
+
dest=/etc/monit/conf.d/unicorn
|
19
|
+
mode=u=rw,g=r,o=r
|
20
|
+
register: unicorn_monit_config
|
21
|
+
|
22
|
+
- name: Reload Monit
|
23
|
+
command: bash -lc "monit reload"
|
24
|
+
when: unicorn_monit_config.changed
|
@@ -0,0 +1,47 @@
|
|
1
|
+
worker_processes {{ unicorn_workers }}
|
2
|
+
working_directory "{{ be_app_path }}"
|
3
|
+
pid "{{ be_app_path }}/tmp/unicorn.pid"
|
4
|
+
stderr_path "{{ be_app_path }}/log/unicorn.log"
|
5
|
+
stdout_path "{{ be_app_path }}/log/unicorn.log"
|
6
|
+
|
7
|
+
# Please read this and understand the risk you take by enabling preload_app
|
8
|
+
# http://unicorn.bogomips.org/Unicorn/Configurator.html#method-i-preload_app
|
9
|
+
preload_app false
|
10
|
+
|
11
|
+
timeout 30
|
12
|
+
|
13
|
+
listen "{{ unicorn_sockfile }}"
|
14
|
+
|
15
|
+
before_exec do |server|
|
16
|
+
ENV["BUNDLE_GEMFILE"] = "#{Rails.root}/Gemfile"
|
17
|
+
end
|
18
|
+
|
19
|
+
GC.respond_to?(:copy_on_write_friendly=) and
|
20
|
+
GC.copy_on_write_friendly = true
|
21
|
+
|
22
|
+
check_client_connection false
|
23
|
+
|
24
|
+
before_fork do |server, worker|
|
25
|
+
defined?(ActiveRecord::Base) and
|
26
|
+
ActiveRecord::Base.connection.disconnect!
|
27
|
+
|
28
|
+
old_pid = "#{server.config[:pid]}.oldbin"
|
29
|
+
if old_pid != server.pid
|
30
|
+
begin
|
31
|
+
sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
|
32
|
+
Process.kill(sig, File.read(old_pid).to_i)
|
33
|
+
rescue Errno::ENOENT, Errno::ESRCH
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Throttle the master from forking too quickly by sleeping. Due
|
38
|
+
# to the implementation of standard Unix signal handlers, this
|
39
|
+
# helps (but does not completely) prevent identical, repeated signals
|
40
|
+
# from being lost when the receiving process is busy.
|
41
|
+
sleep 1
|
42
|
+
end
|
43
|
+
|
44
|
+
after_fork do |server, worker|
|
45
|
+
defined?(ActiveRecord::Base) and
|
46
|
+
ActiveRecord::Base.establish_connection
|
47
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
set -u
|
4
|
+
|
5
|
+
TIMEOUT=${TIMEOUT-60}
|
6
|
+
RBENV_ROOT="{{ rbenv_root }}"
|
7
|
+
PATH="$RBENV_ROOT/bin:$RBENV_ROOT/shims:$PATH"
|
8
|
+
APP_ROOT="{{be_app_path}}"
|
9
|
+
APP_USER="{{ deployer_user.name }}"
|
10
|
+
PID="$APP_ROOT/tmp/unicorn.pid"
|
11
|
+
CMD="$APP_ROOT/bin/unicorn -E {{be_app_env}} -D -c $APP_ROOT/config/unicorn.rb"
|
12
|
+
|
13
|
+
action="$1"
|
14
|
+
old_pid="$PID.oldbin"
|
15
|
+
|
16
|
+
cd $APP_ROOT || exit 1
|
17
|
+
|
18
|
+
sig () {
|
19
|
+
test -s "$PID" && kill -$1 `cat $PID`
|
20
|
+
}
|
21
|
+
|
22
|
+
oldsig () {
|
23
|
+
test -s $old_pid && kill -$1 `cat $old_pid`
|
24
|
+
}
|
25
|
+
|
26
|
+
case $action in
|
27
|
+
start)
|
28
|
+
sig 0 && echo >&2 "Already running" && exit 0
|
29
|
+
rm -f $PID && $CMD
|
30
|
+
;;
|
31
|
+
stop)
|
32
|
+
sig QUIT && echo "Stopping" && exit 0
|
33
|
+
echo >&2 "Unicorn master process with ID `cat $PID` not found (see: $PID)"
|
34
|
+
;;
|
35
|
+
force-stop)
|
36
|
+
pkill -9 -f "unicorn master" && echo "Forcing a stop\n" && rm -f $PID && echo "Cleaning up pid" && exit 0
|
37
|
+
;;
|
38
|
+
restart|reload)
|
39
|
+
sig HUP && echo reloaded OK && exit 0
|
40
|
+
echo >&2 "Couldn't reload, starting '$CMD' instead"
|
41
|
+
$CMD
|
42
|
+
;;
|
43
|
+
upgrade)
|
44
|
+
if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
|
45
|
+
then
|
46
|
+
n=$TIMEOUT
|
47
|
+
while test -s $old_pid && test $n -ge 0
|
48
|
+
do
|
49
|
+
printf '.' && sleep 1 && n=$(( $n - 1 ))
|
50
|
+
done
|
51
|
+
echo
|
52
|
+
|
53
|
+
if test $n -lt 0 && test -s $old_pid
|
54
|
+
then
|
55
|
+
echo >&2 "$old_pid still exists after $TIMEOUT seconds"
|
56
|
+
exit 1
|
57
|
+
fi
|
58
|
+
exit 0
|
59
|
+
fi
|
60
|
+
echo >&2 "Couldn't upgrade, starting '$CMD' instead"
|
61
|
+
$CMD
|
62
|
+
;;
|
63
|
+
reopen-logs)
|
64
|
+
sig USR1
|
65
|
+
;;
|
66
|
+
*)
|
67
|
+
echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>"
|
68
|
+
exit 1
|
69
|
+
;;
|
70
|
+
esac
|
@@ -0,0 +1,5 @@
|
|
1
|
+
check process unicorn with pidfile {{ be_app_path }}/tmp/unicorn.pid
|
2
|
+
start program "/etc/init.d/unicorn_{{ app_name }} start" as uid deployer and gid deployer with timeout 90 seconds
|
3
|
+
restart program "/etc/init.d/unicorn_{{ app_name }} restart" as uid deployer and gid deployer with timeout 90 seconds
|
4
|
+
stop program "/etc/init.d/unicorn_{{ app_name }} stop" as uid deployer and gid deployer with timeout 90 seconds
|
5
|
+
if 5 restarts within 5 cycles then timeout
|
data/taperole.gemspec
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = "taperole"
|
3
|
+
spec.version = '1.0.0'
|
4
|
+
spec.authors = ['Jack Forrest', 'Smashing Boxes', 'Brandon Mathis']
|
5
|
+
spec.email = ['jack@smashingboxes.com', 'brandon@sbox.es']
|
6
|
+
spec.summary = 'A tool for provisioning and deploying boxes for hosting Rails apps'
|
7
|
+
spec.license = 'MIT'
|
8
|
+
|
9
|
+
spec.files = `git ls-files`.split("\n")
|
10
|
+
spec.executables = 'tape'
|
11
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#TODO Make sure that secrets is ignored
|
2
|
+
---
|
3
|
+
- hosts: omnibox
|
4
|
+
|
5
|
+
vars_files:
|
6
|
+
- "{{tape_dir}}/vars/defaults.yml"
|
7
|
+
- tape_vars.yml
|
8
|
+
|
9
|
+
user: "{{ deployer_user.name }}"
|
10
|
+
|
11
|
+
roles:
|
12
|
+
- backend_checkout
|
13
|
+
- backend_config
|
14
|
+
- database_load
|
15
|
+
- unicorn_activate
|
16
|
+
- frontend_deploy
|
17
|
+
- delayed_job
|
@@ -0,0 +1,25 @@
|
|
1
|
+
---
|
2
|
+
- hosts: omnibox
|
3
|
+
user: root
|
4
|
+
|
5
|
+
vars_files:
|
6
|
+
- "{{tape_dir}}/vars/defaults.yml"
|
7
|
+
- tape_vars.yml
|
8
|
+
|
9
|
+
roles:
|
10
|
+
- general
|
11
|
+
- monit_install
|
12
|
+
- postgres
|
13
|
+
- nginx
|
14
|
+
- backend_install_essentials
|
15
|
+
- deployer_user
|
16
|
+
- backend_checkout
|
17
|
+
- unicorn_install
|
18
|
+
- backend_config
|
19
|
+
- database_load
|
20
|
+
- unicorn_activate
|
21
|
+
- frontend_deploy
|
22
|
+
# - delayed_job
|
23
|
+
# - sidekiq
|
24
|
+
# - redis
|
25
|
+
- monit_activate # Run Last
|
@@ -0,0 +1,13 @@
|
|
1
|
+
app_name:
|
2
|
+
|
3
|
+
# Rails App Configs
|
4
|
+
be_app_repo:
|
5
|
+
be_app_env: production
|
6
|
+
be_app_branch: master
|
7
|
+
|
8
|
+
# HTML/JS App Configs
|
9
|
+
# Uncomment if you want to deploy a JS/HTML App
|
10
|
+
# fe_app_local_path: /path/to/built/js/app/
|
11
|
+
|
12
|
+
dev_key_files:
|
13
|
+
- dev_keys/key.pub
|
data/vars/defaults.yml
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
be_app_path: "/home/{{ deployer_user.name }}/{{ app_name }}"
|
2
|
+
|
3
|
+
fe_app_name: "{{ app_name }}_fe"
|
4
|
+
fe_app_path: "/home/{{ deployer_user.name }}/{{ fe_app_name }}"
|
5
|
+
|
6
|
+
deployer_user:
|
7
|
+
name: deployer
|
8
|
+
groups:
|
9
|
+
- deployer
|
10
|
+
- staff
|
11
|
+
|
12
|
+
# Path where this playbook is being run from
|
13
|
+
local_dir: "{{lookup('env', 'PWD')}}"
|
14
|
+
|
15
|
+
unicorn_workers: "{{ansible_processor_cores * 2}}"
|
16
|
+
unicorn_sockfile: /tmp/unicorn_{{ app_name }}.sock
|
17
|
+
|
18
|
+
swap_file:
|
19
|
+
path: /swp
|
20
|
+
size_kb: "{{ 1024 * 1024 }}"
|
21
|
+
|
22
|
+
# echo 'password' | md5
|
23
|
+
database_password: 286755fad04869ca523320acce0dc6a4
|
24
|
+
|
25
|
+
enabled_delayed_job: false
|
26
|
+
|
27
|
+
precompile_assets: true
|
28
|
+
|
29
|
+
# Sets server_name in the nginx sites-enabled file
|
30
|
+
app_url: false
|
31
|
+
|
metadata
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: taperole
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jack Forrest
|
8
|
+
- Smashing Boxes
|
9
|
+
- Brandon Mathis
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2015-03-14 00:00:00.000000000 Z
|
14
|
+
dependencies: []
|
15
|
+
description:
|
16
|
+
email:
|
17
|
+
- jack@smashingboxes.com
|
18
|
+
- brandon@sbox.es
|
19
|
+
executables:
|
20
|
+
- tape
|
21
|
+
extensions: []
|
22
|
+
extra_rdoc_files: []
|
23
|
+
files:
|
24
|
+
- ".gitignore"
|
25
|
+
- ".tape/ansible.cfg"
|
26
|
+
- CONTRIBUTING.md
|
27
|
+
- README.md
|
28
|
+
- Vagrantfile
|
29
|
+
- ansible.cfg
|
30
|
+
- bin/tape
|
31
|
+
- id_rsa_sb_basebox
|
32
|
+
- lib/tape.rb
|
33
|
+
- lib/tape/ansible_runner.rb
|
34
|
+
- lib/tape/installer.rb
|
35
|
+
- lib/tape/qemu_provisioner.rb
|
36
|
+
- lib/tape/vagrant_provisioner.rb
|
37
|
+
- requirements.yml
|
38
|
+
- roles/after_deploy/tasks/main.yml
|
39
|
+
- roles/backend_checkout/tasks/main.yml
|
40
|
+
- roles/backend_config/defaults/main.yml
|
41
|
+
- roles/backend_config/tasks/main.yml
|
42
|
+
- roles/backend_config/templates/database.yml.j2
|
43
|
+
- roles/backend_config/templates/env_config.yml.j2
|
44
|
+
- roles/backend_install_essentials/meta/main.yml
|
45
|
+
- roles/backend_install_essentials/tasks/main.yml
|
46
|
+
- roles/backend_install_essentials/templates/memcached.j2
|
47
|
+
- roles/database_load/defaults/main.yml
|
48
|
+
- roles/database_load/meta/main.yml
|
49
|
+
- roles/database_load/tasks/db_reset.yml
|
50
|
+
- roles/database_load/tasks/main.yml
|
51
|
+
- roles/delayed_job/defaults/main.yml
|
52
|
+
- roles/delayed_job/library/sudo_upstart
|
53
|
+
- roles/delayed_job/tasks/main.yml
|
54
|
+
- roles/delayed_job/templates/dj_runner_upstart.j2
|
55
|
+
- roles/deployer_user/files/id_rsa_digital_ocean.pub
|
56
|
+
- roles/deployer_user/tasks/keys.yml
|
57
|
+
- roles/deployer_user/tasks/main.yml
|
58
|
+
- roles/frontend_deploy/handlers/main.yml
|
59
|
+
- roles/frontend_deploy/tasks/main.yml
|
60
|
+
- roles/general/meta/main.yml
|
61
|
+
- roles/general/tasks/basic_packages.yml
|
62
|
+
- roles/general/tasks/main.yml
|
63
|
+
- roles/general/tasks/swapfile.yml
|
64
|
+
- roles/monit_activate/tasks/main.yml
|
65
|
+
- roles/monit_install/tasks/main.yml
|
66
|
+
- roles/monit_install/templates/web_interface.j2
|
67
|
+
- roles/nginx/handlers/main.yml
|
68
|
+
- roles/nginx/tasks/main.yml
|
69
|
+
- roles/nginx/templates/nginx_monit.j2
|
70
|
+
- roles/nginx/templates/nginx_unicorn.j2
|
71
|
+
- roles/postgres/meta/main.yml
|
72
|
+
- roles/redis/tasks/main.yml
|
73
|
+
- roles/redis/templates/redis.j2
|
74
|
+
- roles/sidekiq/defaults/main.yml
|
75
|
+
- roles/sidekiq/meta/main.yml
|
76
|
+
- roles/sidekiq/tasks/main.yml
|
77
|
+
- roles/sidekiq/templates/sidekiq.j2
|
78
|
+
- roles/unicorn_activate/defaults/main.yml
|
79
|
+
- roles/unicorn_activate/tasks/main.yml
|
80
|
+
- roles/unicorn_install/tasks/main.yml
|
81
|
+
- roles/unicorn_install/templates/unicorn.rb.j2
|
82
|
+
- roles/unicorn_install/templates/unicorn_init.j2
|
83
|
+
- roles/unicorn_install/templates/unicorn_monit.j2
|
84
|
+
- taperole.gemspec
|
85
|
+
- templates/base/deploy.example.yml
|
86
|
+
- templates/base/hosts.example
|
87
|
+
- templates/base/omnibox.example.yml
|
88
|
+
- templates/base/tape_vars.example.yml
|
89
|
+
- templates/static_html/deploy.example.yml
|
90
|
+
- templates/static_html/omnibox.example.yml
|
91
|
+
- templates/static_html/tape_vars.example.yml
|
92
|
+
- vars/defaults.yml
|
93
|
+
homepage:
|
94
|
+
licenses:
|
95
|
+
- MIT
|
96
|
+
metadata: {}
|
97
|
+
post_install_message:
|
98
|
+
rdoc_options: []
|
99
|
+
require_paths:
|
100
|
+
- lib
|
101
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
requirements: []
|
112
|
+
rubyforge_project:
|
113
|
+
rubygems_version: 2.2.2
|
114
|
+
signing_key:
|
115
|
+
specification_version: 4
|
116
|
+
summary: A tool for provisioning and deploying boxes for hosting Rails apps
|
117
|
+
test_files: []
|