Skip to content

Commit b9b11f2

Browse files
committed
add a queue init script on dev boxes
1 parent ecb1228 commit b9b11f2

File tree

4 files changed

+123
-0
lines changed

4 files changed

+123
-0
lines changed

hieradata/nodes/metacpan-dev.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
---
2+
3+
classes:
4+
- minion_queue
5+
6+
minion_queue::service::workers: 1
7+
minion_queue::service::ensure: running
8+
minion_queue::service::enable: true
9+
210
metacpan::user: 'vagrant'
311
metacpan::group: 'vagrant'
412

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# == Class: minion_queue
2+
#
3+
# Probably requires metacpan::system::postgress
4+
# but that's not a specific dependency for now
5+
#
6+
# Add the following to hiera
7+
#
8+
# classes:
9+
# - minion_queue
10+
#
11+
# minion_queue::service::workers: 1
12+
# minion_queue::service::ensure: running
13+
# minion_queue::service::enable: true
14+
#
15+
#
16+
class minion_queue(
17+
) {
18+
19+
include minion_queue::service
20+
21+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Install init script for minion_queue
2+
# See init.pp for details
3+
class minion_queue::service (
4+
$workers = hiera('minion_queue::service::workers', 1 ),
5+
$service_ensure = hiera('minion_queue::service::ensure', 'stopped' ),
6+
$service_enable = hiera('minion_queue::service::enable', false ),
7+
$user = hiera('metacpan::user', 'metacpan'),
8+
$group = hiera('metacpan::group', 'metacpan'),
9+
) {
10+
include perl
11+
12+
$service_name = "minion_queue"
13+
$perlbin = $perl::params::bin_dir
14+
15+
$init = "/etc/init.d/${service_name}"
16+
17+
file { $init:
18+
ensure => file,
19+
mode => '0755',
20+
owner => $user,
21+
group => $group,
22+
content => template('minion_queue/init.pl.erb'),
23+
}
24+
25+
service { $service_name:
26+
ensure => $service_enable,
27+
enable => $service_enable,
28+
}
29+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#!<%= @perlbin %>/perl
2+
<%# vim: set syn=perl.eruby ts=4 sts=4 sw=4 et sta: %>
3+
# Generated by puppet.
4+
5+
### BEGIN INIT INFO
6+
# Provides: <%= @name %>
7+
# Required-Start: $all
8+
# Required-Stop:
9+
# Default-Start: 2 3 4 5
10+
# Default-Stop: 0 1 6
11+
# Short-Description: Starts <%= @name %>
12+
# Description: Starts <%= @name %>
13+
### END INIT INFO`
14+
15+
use strict;
16+
use warnings;
17+
18+
use Daemon::Control;
19+
use File::Path 2.06 (); # core
20+
21+
my $name = "minion_queue";
22+
23+
my $code_base_name = 'metacpan-api';
24+
25+
my $user = '<%= @user %>';
26+
my $home = "/home/${user}/${code_base_name}";
27+
28+
my %dirs = (
29+
pid => "$home/var/run",
30+
log => "$home/var/log",
31+
);
32+
my $carton = '<%= @perlbin %>/carton';
33+
my $workers = <%= @workers %>;
34+
35+
my $carton_dir = "/home/${user}/carton";
36+
my $carton_path = "${carton_dir}/${code_base_name}";
37+
38+
# TODO: Should we use the ./bin/carton wrapper instead of setting this here?
39+
$ENV{PERL_CARTON_PATH} = $carton_path;
40+
41+
# We need the right perl in the ENV
42+
$ENV{PATH} = '<%= @perlbin %>:' . $ENV{PATH};
43+
44+
# carton exec bin/queue.pl
45+
my @program_args = (
46+
'exec', "${home}/bin/queue.pl",
47+
'minion', 'worker',
48+
'-j', $workers
49+
);
50+
51+
my $args = {
52+
directory => $home,
53+
fork => 2,
54+
group => $user,
55+
lsb_desc => "Starts $name",
56+
lsb_sdesc => "Starts $name",
57+
name => $name,
58+
pid_file => "$dirs{pid}/${name}.pid",
59+
program => $carton,
60+
program_args => \@program_args,
61+
stderr_file => "$dirs{log}/${name}.log",
62+
user => $user,
63+
};
64+
65+
exit Daemon::Control->new($args)->run;

0 commit comments

Comments
 (0)