Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: modules/buildbot/manifests/init.pp

Issue 29325436: Issue 1281 - Introduce module buildbot (Closed)
Patch Set: Issue 1281 - Rebase branch buildbot on top of upstream Created Sept. 5, 2015, 11:27 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # == Class: buildbot
2 #
3 # Manage Buildbot (https://buildbot.net/) master and slave setups.
4 #
5 # Class buildbot acts as the root namespace for the buildbot integration
6 # with Puppet, while also providing a variety of setup parameters that can
7 # be used to adjust the software setup.
8 #
9 # It defines a set of virtual resources titled 'buildmaster' and 'buildslave'.
10 # Those are realized implicitly when required by any of the various entities
11 # within the module, but may become realized explicitely when necessary:
12 #
13 # - Concat[]: The 'buildmaster' and 'buildslave' system daemon configuration
14 # - Concat::Fragment[]: The respective root or configuration head fragment
15 # - File[]: The anchestor of default for master and slave $basedir resources
16 # - Service[]: The actual services running the master and slave instances
17 #
18 # Note, however, that the respective instances are rather implementation
19 # specific and thus may become subject to change in the future.
20 #
21 # === Parameters:
22 #
23 # [*master_config*]
24 # The path to the 'buildmaster' system configuration.
25 #
26 # [*master_directory*]
27 # The anchestor of the default buildbot::master $basedir.
Felix Dahlke 2015/10/02 12:16:26 Typo.
mathias 2015/10/02 13:47:40 Acknowledged.
28 #
29 # [*master_pacakges*]
Felix Dahlke 2015/10/02 12:16:26 Typo.
mathias 2015/10/02 13:47:40 Acknowledged.
30 # The packages that provide the buildbot::master dependencies.
31 #
32 # [*master_runner*]
33 # The path to the runner used for buildbot::master instances.
34 #
35 # [*master_service*]
36 # The status 'buildmaster' service status to ensure, if any.
Felix Dahlke 2015/10/02 12:16:26 One "status" should suffice.
mathias 2015/10/02 13:47:40 Acknowledged.
37 #
38 # [*master_user*]
39 # The user operating the 'buildmaster' service.
40 #
41 # [*slave_config*]
42 # The path to the 'buildslave' system configuration.
43 #
44 # [*slave_directory*]
45 # The anchestor of the default buildbot::slave $basedir.
46 #
47 # [*slave_pacakges*]
48 # The packages that provide the buildbot::slave dependencies.
49 #
50 # [*slave_runner*]
51 # The path to the runner used for buildbot::slave instances.
52 #
53 # [*slave_service*]
54 # The status 'buildslave' service status to ensure, if any.
55 #
56 # [*slave_user*]
57 # The user operating the 'buildslave' service.
58 #
59 # === Examples:
60 #
61 # class {'buildbot':
62 # master => 'running',
63 # }
64 #
65 class buildbot (
Felix Dahlke 2015/10/02 12:16:26 For some reason, I haven't yet found the part wher
mathias 2015/10/02 13:47:40 Types buildbot::master and buildbot::slave will en
Felix Dahlke 2015/10/02 15:44:27 Oh, now I get it, the packages to use and some det
mathias 2015/10/02 16:25:53 Providing those options is a trait of this approac
Felix Dahlke 2015/10/02 16:48:48 Please note that I'm fine with what the buildbot c
mathias 2015/10/20 20:36:16 Acknowledged.
66 $master_config = '/etc/default/buildmaster',
67 $master_directory = '/var/buildmaster',
68 $master_packages = ['buildbot'],
69 $master_runner = '/usr/bin/buildbot',
70 $master_service = undef,
71 $master_user = 'buildbot',
72 $slave_config = '/etc/default/buildslave',
73 $slave_directory = '/var/buildslave',
74 $slave_packages = ['buildbot-slave'],
75 $slave_runner = '/usr/bin/buildslave',
76 $slave_service = undef,
77 $slave_user = 'buildbot',
78 ) {
79
80 @concat {
81 'buildmaster':
82 owner => $master_user,
83 path => $master_config,
84 require => Package[$master_packages];
85 'buildslave':
86 owner => $slave_user,
87 path => $slave_config,
88 require => Package[$slave_packages];
89 }
90
91 @concat::fragment {
92 'buildmaster':
93 content => template('buildbot/buildmaster.erb'),
94 order => 0,
95 target => 'buildmaster';
96 'buildslave':
97 content => template('buildbot/buildslave.erb'),
98 order => 0,
99 target => 'buildslave';
100 }
101
102 @file {
103 $master_directory:
104 ensure => 'directory',
105 owner => $master_user,
106 require => Package[$master_packages];
107 $slave_directory:
108 ensure => 'directory',
109 owner => $slave_user,
110 require => Package[$slave_packages];
111 }
112
113 Service {
114 hasrestart => true,
115 hasstatus => false,
116 }
117
118 @service {
119 'buildmaster':
120 ensure => $master_service ? {
121 /^(running|started|true)$/ => 'running',
122 default => 'stopped',
123 },
124 pattern => "^$master_user.*python.*$master_runner",
125 require => Package[$master_packages];
126 'buildslave':
127 ensure => $slave_service ? {
128 /^(running|started|true)$/ => 'running',
129 default => 'stopped',
130 },
131 pattern => "^$slave_user.*python.*$slave_runner",
132 require => Package[$slave_packages];
133 }
134
135 Service['buildmaster'] <~ Exec <|creates == $master_config|>
136 Service['buildmaster'] <~ File <|path == $master_config|>
137 Service['buildmaster'] ~>
138
139 Service['buildslave'] <~ Exec <|creates == $slave_config|>
140 Service['buildslave'] <~ File <|path == $slave_config|>
141
142 if $master_service != undef {
143 ensure_packages($master_packages)
144 realize(Service['buildmaster'])
145 }
146
147 if $slave_service != undef {
148 ensure_packages($slave_packages)
149 realize(Service['buildslave'])
150 }
151 }
OLDNEW

Powered by Google App Engine
This is Rietveld