taperole 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/roles/backend_config/tasks/main.yml +1 -1
- data/roles/database_load/tasks/main.yml +0 -9
- data/roles/delayed_job/defaults/main.yml +1 -2
- data/roles/delayed_job/meta/main.yml +3 -0
- data/roles/delayed_job/tasks/main.yml +20 -31
- data/roles/delayed_job/templates/dj_monit_config.j2 +6 -0
- data/roles/delayed_job/templates/dj_monit_runner.j2 +9 -0
- data/taperole.gemspec +1 -1
- metadata +6 -5
- data/roles/delayed_job/library/sudo_upstart +0 -101
- data/roles/delayed_job/templates/dj_runner_upstart.j2 +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 381889ad9f30af9db293aa6ce5399f4978349b1c
|
4
|
+
data.tar.gz: e5f37142b7d22ac0529bc676b6686b1ff14d4f3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aba42bab23247d0624fc0b9d03d3bb2e89007129bdf8e05d687b0d0efee9a38996226e6856f02f10457a69927eeadb4cb175ae68ff335e3948883d1ee6150788
|
7
|
+
data.tar.gz: 04b19dd30374fe2323c2bd4fb198a9ef96fd634728b1e121623f8dbf26c0caac61c4ab284078a23f37d2e8ca054f19aee48078056a056a762feeec328574e36c
|
@@ -7,7 +7,7 @@
|
|
7
7
|
remote_user: "{{ deployer_user.name }}"
|
8
8
|
command: chdir={{ be_app_path }}
|
9
9
|
bash -lc "RAILS_ENV={{be_app_env}} bundle install
|
10
|
-
--without test development
|
10
|
+
--without test development --deployment"
|
11
11
|
tags: [be_deploy, bundle]
|
12
12
|
|
13
13
|
- name: Ensure env_config.yml file present
|
@@ -10,12 +10,3 @@
|
|
10
10
|
when: (app_checkout is defined and app_checkout.changed)
|
11
11
|
or rake.force_migrate
|
12
12
|
or (db_reset is defined and db_reset.changed)
|
13
|
-
|
14
|
-
- name: Seed DB
|
15
|
-
remote_user: "{{ deployer_user.name }}"
|
16
|
-
command: chdir={{ be_app_path }}
|
17
|
-
bash -lc "bundle exec rake db:seed RAILS_ENV={{be_app_env}}"
|
18
|
-
tags: [be_deploy,seed,db_reset]
|
19
|
-
when: (app_checkout is defined and app_checkout.changed)
|
20
|
-
or rake.force_seed
|
21
|
-
or (db_reset is defined and db_reset.changed)
|
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
force_dj_runner_restart: false
|
1
|
+
dj_runners: 2
|
@@ -1,35 +1,24 @@
|
|
1
|
-
- name: Install
|
2
|
-
template: src=
|
3
|
-
dest=/
|
4
|
-
|
5
|
-
register: dj_runner_installation
|
6
|
-
when: enabled_delayed_job
|
1
|
+
- name: Install DJ monit bin command
|
2
|
+
template: src=dj_monit_runner.j2
|
3
|
+
dest=/usr/bin/dj_monit_runner
|
4
|
+
mode=u=rwx,g=rwx,o=r
|
7
5
|
|
8
|
-
- name:
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
- name: Install DJ monit config
|
7
|
+
template: src=dj_monit_config.j2
|
8
|
+
dest=/etc/monit/conf.d/delayed_jobs
|
9
|
+
mode=u=rw,g=r,o=r
|
10
|
+
register: dj_monit_config
|
13
11
|
|
14
|
-
- name:
|
15
|
-
|
16
|
-
|
17
|
-
line="{{ deployer_user.name }} ALL = (root) NOPASSWD: /sbin/{{item}} dj_runner_{{app_name}}"'
|
18
|
-
with_items:
|
19
|
-
- start
|
20
|
-
- stop
|
21
|
-
- restart
|
22
|
-
- status
|
23
|
-
- reload
|
24
|
-
tags: [configure_dj_runner]
|
25
|
-
when: enabled_delayed_job
|
12
|
+
- name: Reload Monit
|
13
|
+
command: bash -lc "monit reload"
|
14
|
+
when: dj_monit_config.changed
|
26
15
|
|
27
|
-
- name:
|
28
|
-
sudo_upstart: name=dj_runner_{{app_name}} state=restarted
|
16
|
+
- name: Restart Delayed Job
|
29
17
|
remote_user: "{{ deployer_user.name }}"
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
18
|
+
command: bash -lc "sudo monit stop delayed_job"
|
19
|
+
tags: [be_deploy]
|
20
|
+
|
21
|
+
- name: Restart Delayed Job
|
22
|
+
remote_user: "{{ deployer_user.name }}"
|
23
|
+
command: bash -lc "sudo monit start delayed_job"
|
24
|
+
tags: [be_deploy]
|
@@ -0,0 +1,6 @@
|
|
1
|
+
check process delayed_job
|
2
|
+
with pidfile {{be_app_path}}/tmp/pids/delayed_job.pid
|
3
|
+
start program "/usr/bin/dj_monit_runner start {{dj_runners}}" as uid {{deployer_user.name}} and gid {{deployer_user.name}}
|
4
|
+
stop program "/usr/bin/dj_monit_runner stop" as uid {{deployer_user.name}} and gid {{deployer_user.name}}
|
5
|
+
if 5 restarts within 5 cycles then timeout
|
6
|
+
if totalmemory > 5 GB for 5 cycles then restart
|
data/taperole.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "taperole"
|
3
|
-
spec.version = '1.0
|
3
|
+
spec.version = '1.1.0'
|
4
4
|
spec.authors = ['Jack Forrest', 'Smashing Boxes', 'Brandon Mathis']
|
5
5
|
spec.email = ['jack@smashingboxes.com', 'brandon@sbox.es']
|
6
6
|
spec.summary = 'A tool for provisioning and deploying boxes for hosting Rails apps'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taperole
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jack Forrest
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-03-
|
13
|
+
date: 2015-03-27 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description:
|
16
16
|
email:
|
@@ -49,9 +49,10 @@ files:
|
|
49
49
|
- roles/database_load/tasks/db_reset.yml
|
50
50
|
- roles/database_load/tasks/main.yml
|
51
51
|
- roles/delayed_job/defaults/main.yml
|
52
|
-
- roles/delayed_job/
|
52
|
+
- roles/delayed_job/meta/main.yml
|
53
53
|
- roles/delayed_job/tasks/main.yml
|
54
|
-
- roles/delayed_job/templates/
|
54
|
+
- roles/delayed_job/templates/dj_monit_config.j2
|
55
|
+
- roles/delayed_job/templates/dj_monit_runner.j2
|
55
56
|
- roles/deployer_user/files/id_rsa_digital_ocean.pub
|
56
57
|
- roles/deployer_user/tasks/keys.yml
|
57
58
|
- roles/deployer_user/tasks/main.yml
|
@@ -219,7 +220,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
219
220
|
version: '0'
|
220
221
|
requirements: []
|
221
222
|
rubyforge_project:
|
222
|
-
rubygems_version: 2.
|
223
|
+
rubygems_version: 2.4.6
|
223
224
|
signing_key:
|
224
225
|
specification_version: 4
|
225
226
|
summary: A tool for provisioning and deploying boxes for hosting Rails apps
|
@@ -1,101 +0,0 @@
|
|
1
|
-
#!/bin/sh
|
2
|
-
|
3
|
-
# This ansible module runs upstart tasks with sudo.
|
4
|
-
# This is necessary when specific jobs are allowed with
|
5
|
-
# the sudoers file, as using the ansible service module will
|
6
|
-
# attempt to execute the entire service module as root instead
|
7
|
-
# of just the /sbin/{start,stop,...} jobs
|
8
|
-
#
|
9
|
-
# This module also wraps restart and reload, ensuring the service
|
10
|
-
# is started
|
11
|
-
|
12
|
-
# Ansible provides its module opts in a file that needs to be sourced
|
13
|
-
# to get the env we run in
|
14
|
-
. $1
|
15
|
-
|
16
|
-
# Avoid stalling on password prompts
|
17
|
-
sudocmd="echo '' | sudo -S"
|
18
|
-
|
19
|
-
# holds the result of our operations for reporting state changes
|
20
|
-
res=none
|
21
|
-
|
22
|
-
sudoex() { eval "$sudocmd $@ >/dev/null";}
|
23
|
-
|
24
|
-
# Failure JSON that ansible expects
|
25
|
-
fail() {
|
26
|
-
echo '{"failed": true, "msg": "' $1 '", "status": "'`us_status $name`'"}'
|
27
|
-
exit 1
|
28
|
-
}
|
29
|
-
|
30
|
-
# Make sure certain vars are set when sourcing $1
|
31
|
-
require_opt() {
|
32
|
-
eval val=\$$1
|
33
|
-
if [ ! -n "$val" ]; then
|
34
|
-
fail "Opt: $1 is required!"
|
35
|
-
fi
|
36
|
-
}
|
37
|
-
|
38
|
-
# All we need for now is name and state
|
39
|
-
require_opt name
|
40
|
-
require_opt state
|
41
|
-
|
42
|
-
if ! status $name; then
|
43
|
-
fail "Invalid service: $name"
|
44
|
-
fi
|
45
|
-
|
46
|
-
reload() {
|
47
|
-
if sudoex /sbin/reload $name; then
|
48
|
-
res=reloaded
|
49
|
-
else
|
50
|
-
sudoex /sbin/start $name || fail "Could not reload or start! $name"
|
51
|
-
res=started
|
52
|
-
fi
|
53
|
-
}
|
54
|
-
|
55
|
-
restart() {
|
56
|
-
if sudoex /sbin/restart $name; then
|
57
|
-
res=restarted
|
58
|
-
else
|
59
|
-
sudoex /sbin/start $name || fail "Could not restart or start! $name"
|
60
|
-
res=started
|
61
|
-
fi
|
62
|
-
}
|
63
|
-
|
64
|
-
stopit() {
|
65
|
-
if [ "`us_status $name`" = "stop/waiting" ]; then
|
66
|
-
res=none
|
67
|
-
else
|
68
|
-
sudoex /sbin/stop $name || fail "Could not stop $name"
|
69
|
-
res=stopped
|
70
|
-
fi
|
71
|
-
}
|
72
|
-
|
73
|
-
start() {
|
74
|
-
if [ "`us_status $name`" = "start/running" ]; then
|
75
|
-
res=none
|
76
|
-
else
|
77
|
-
sudoex /sbin/start $name || fail "Could not start $name"
|
78
|
-
res=started
|
79
|
-
fi
|
80
|
-
}
|
81
|
-
|
82
|
-
# Return status string for the given service
|
83
|
-
us_status() {
|
84
|
-
status $1 | cut -f 2 -d ' ' | tr -d ','
|
85
|
-
}
|
86
|
-
|
87
|
-
res=''
|
88
|
-
case $state in
|
89
|
-
reloaded) reload;;
|
90
|
-
restarted) restart;;
|
91
|
-
stopped) stopit;;
|
92
|
-
started) start;;
|
93
|
-
*) fail "Invalid state: $state";;
|
94
|
-
esac
|
95
|
-
|
96
|
-
# Were there changes applied?
|
97
|
-
if [ "$res" = none ]; then
|
98
|
-
echo '{"changed": false}'
|
99
|
-
else
|
100
|
-
echo '{"change": "'$res'", "changed": true}'
|
101
|
-
fi
|
@@ -1,17 +0,0 @@
|
|
1
|
-
description "{{app_name}} delayed job runner daemon"
|
2
|
-
|
3
|
-
start on virtual-filesystems
|
4
|
-
stop on runlevel [06]
|
5
|
-
|
6
|
-
env PATH={{ rbenv_root }}/shims:{{ rbenv_root }}/bin:/usr/bin:/sbin:/bin
|
7
|
-
env RAILS_ENV={{be_app_env}}
|
8
|
-
setuid {{ deployer_user.name }}
|
9
|
-
setgid {{ deployer_user.name }}
|
10
|
-
|
11
|
-
chdir {{be_app_path}}
|
12
|
-
|
13
|
-
respawn limit 5 5
|
14
|
-
|
15
|
-
kill timeout 5
|
16
|
-
|
17
|
-
exec bundle exec bin/delayed_job run
|