poolparty 0.2.6 → 0.2.18

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.
Files changed (208) hide show
  1. data/Manifest.txt +123 -4
  2. data/PostInstall.txt +2 -1
  3. data/bin/cloud +16 -7
  4. data/bin/cloud-provision +9 -5
  5. data/bin/cloud-run +19 -0
  6. data/bin/cloud-ssh +2 -7
  7. data/bin/cloud-start +2 -1
  8. data/bin/pool +3 -3
  9. data/bin/server-build-messenger +20 -0
  10. data/bin/server-fire-cmd +14 -0
  11. data/bin/server-get-load +29 -0
  12. data/bin/server-list-active +25 -0
  13. data/bin/server-list-responding +24 -0
  14. data/bin/server-rerun +24 -0
  15. data/bin/server-start-master +27 -0
  16. data/bin/server-start-node +33 -0
  17. data/config/requirements.rb +1 -1
  18. data/erl_crash.dump +8409 -0
  19. data/lib/erlang/messenger/Emakefile +1 -0
  20. data/lib/erlang/messenger/Makefile +15 -0
  21. data/lib/erlang/messenger/README +5 -0
  22. data/lib/erlang/messenger/Rakefile +60 -0
  23. data/lib/erlang/messenger/control +11 -0
  24. data/lib/erlang/messenger/ebin/master.app +19 -0
  25. data/lib/erlang/messenger/ebin/master_app.beam +0 -0
  26. data/lib/erlang/messenger/ebin/node.app +19 -0
  27. data/lib/erlang/messenger/ebin/node_app.beam +0 -0
  28. data/lib/erlang/messenger/ebin/packager.app +19 -0
  29. data/lib/erlang/messenger/ebin/pm_client.beam +0 -0
  30. data/lib/erlang/messenger/ebin/pm_cluster.beam +0 -0
  31. data/lib/erlang/messenger/ebin/pm_event_handler.beam +0 -0
  32. data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
  33. data/lib/erlang/messenger/ebin/pm_master_rel-0.1.rel +1 -0
  34. data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
  35. data/lib/erlang/messenger/ebin/pm_node.beam +0 -0
  36. data/lib/erlang/messenger/ebin/pm_node_rel-0.1.rel +1 -0
  37. data/lib/erlang/messenger/ebin/pm_node_supervisor.beam +0 -0
  38. data/lib/erlang/messenger/ebin/pm_packager.beam +0 -0
  39. data/lib/erlang/messenger/ebin/utils.beam +0 -0
  40. data/lib/erlang/messenger/lib/eunit/AUTHORS +2 -0
  41. data/lib/erlang/messenger/lib/eunit/CHANGELOG +14 -0
  42. data/lib/erlang/messenger/lib/eunit/COPYING +504 -0
  43. data/lib/erlang/messenger/lib/eunit/Makefile +28 -0
  44. data/lib/erlang/messenger/lib/eunit/NOTES +276 -0
  45. data/lib/erlang/messenger/lib/eunit/README +3 -0
  46. data/lib/erlang/messenger/lib/eunit/doc/edoc-info +3 -0
  47. data/lib/erlang/messenger/lib/eunit/doc/erlang.png +0 -0
  48. data/lib/erlang/messenger/lib/eunit/doc/eunit.html +172 -0
  49. data/lib/erlang/messenger/lib/eunit/doc/index.html +17 -0
  50. data/lib/erlang/messenger/lib/eunit/doc/modules-frame.html +12 -0
  51. data/lib/erlang/messenger/lib/eunit/doc/overview-summary.html +984 -0
  52. data/lib/erlang/messenger/lib/eunit/doc/overview.edoc +980 -0
  53. data/lib/erlang/messenger/lib/eunit/doc/packages-frame.html +11 -0
  54. data/lib/erlang/messenger/lib/eunit/doc/stylesheet.css +55 -0
  55. data/lib/erlang/messenger/lib/eunit/ebin/autoload.beam +0 -0
  56. data/lib/erlang/messenger/lib/eunit/ebin/code_monitor.beam +0 -0
  57. data/lib/erlang/messenger/lib/eunit/ebin/eunit.app +21 -0
  58. data/lib/erlang/messenger/lib/eunit/ebin/eunit.appup +1 -0
  59. data/lib/erlang/messenger/lib/eunit/ebin/eunit.beam +0 -0
  60. data/lib/erlang/messenger/lib/eunit/ebin/eunit_autoexport.beam +0 -0
  61. data/lib/erlang/messenger/lib/eunit/ebin/eunit_data.beam +0 -0
  62. data/lib/erlang/messenger/lib/eunit/ebin/eunit_lib.beam +0 -0
  63. data/lib/erlang/messenger/lib/eunit/ebin/eunit_proc.beam +0 -0
  64. data/lib/erlang/messenger/lib/eunit/ebin/eunit_serial.beam +0 -0
  65. data/lib/erlang/messenger/lib/eunit/ebin/eunit_server.beam +0 -0
  66. data/lib/erlang/messenger/lib/eunit/ebin/eunit_striptests.beam +0 -0
  67. data/lib/erlang/messenger/lib/eunit/ebin/eunit_test.beam +0 -0
  68. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tests.beam +0 -0
  69. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tty.beam +0 -0
  70. data/lib/erlang/messenger/lib/eunit/ebin/file_monitor.beam +0 -0
  71. data/lib/erlang/messenger/lib/eunit/examples/eunit_examples.erl +339 -0
  72. data/lib/erlang/messenger/lib/eunit/examples/fib.erl +19 -0
  73. data/lib/erlang/messenger/lib/eunit/examples/tests.txt +1 -0
  74. data/lib/erlang/messenger/lib/eunit/include/eunit.hrl +313 -0
  75. data/lib/erlang/messenger/lib/eunit/src/Makefile +46 -0
  76. data/lib/erlang/messenger/lib/eunit/src/autoload.erl +388 -0
  77. data/lib/erlang/messenger/lib/eunit/src/code_monitor.erl +243 -0
  78. data/lib/erlang/messenger/lib/eunit/src/eunit.app.src +21 -0
  79. data/lib/erlang/messenger/lib/eunit/src/eunit.appup.src +1 -0
  80. data/lib/erlang/messenger/lib/eunit/src/eunit.erl +196 -0
  81. data/lib/erlang/messenger/lib/eunit/src/eunit_autoexport.erl +102 -0
  82. data/lib/erlang/messenger/lib/eunit/src/eunit_data.erl +798 -0
  83. data/lib/erlang/messenger/lib/eunit/src/eunit_internal.hrl +48 -0
  84. data/lib/erlang/messenger/lib/eunit/src/eunit_lib.erl +682 -0
  85. data/lib/erlang/messenger/lib/eunit/src/eunit_proc.erl +552 -0
  86. data/lib/erlang/messenger/lib/eunit/src/eunit_serial.erl +157 -0
  87. data/lib/erlang/messenger/lib/eunit/src/eunit_server.erl +340 -0
  88. data/lib/erlang/messenger/lib/eunit/src/eunit_striptests.erl +64 -0
  89. data/lib/erlang/messenger/lib/eunit/src/eunit_test.erl +334 -0
  90. data/lib/erlang/messenger/lib/eunit/src/eunit_tests.erl +45 -0
  91. data/lib/erlang/messenger/lib/eunit/src/eunit_tty.erl +272 -0
  92. data/lib/erlang/messenger/lib/eunit/src/file_monitor.erl +409 -0
  93. data/lib/erlang/messenger/lib/eunit/sys.config +9 -0
  94. data/lib/erlang/messenger/lib/eunit/vsn.mk +1 -0
  95. data/lib/erlang/messenger/pm_master_rel-0.1.boot +0 -0
  96. data/lib/erlang/messenger/pm_master_rel-0.1.script +242 -0
  97. data/lib/erlang/messenger/pm_node_rel-0.1.boot +0 -0
  98. data/lib/erlang/messenger/pm_node_rel-0.1.script +242 -0
  99. data/lib/erlang/messenger/src/master_app.erl +39 -0
  100. data/lib/erlang/messenger/src/node_app.erl +39 -0
  101. data/lib/erlang/messenger/src/pm_client.erl +19 -0
  102. data/lib/erlang/messenger/src/pm_cluster.erl +57 -0
  103. data/lib/erlang/messenger/src/pm_event_handler.erl +21 -0
  104. data/lib/erlang/messenger/src/pm_master.erl +118 -0
  105. data/lib/erlang/messenger/src/pm_master_supervisor.erl +40 -0
  106. data/lib/erlang/messenger/src/pm_node.erl +124 -0
  107. data/lib/erlang/messenger/src/pm_node_supervisor.erl +40 -0
  108. data/lib/erlang/messenger/src/pm_packager.erl +73 -0
  109. data/lib/erlang/messenger/src/utils.erl +38 -0
  110. data/lib/poolparty/base_packages/haproxy.rb +9 -2
  111. data/lib/poolparty/base_packages/heartbeat.rb +40 -28
  112. data/lib/poolparty/base_packages/poolparty.rb +39 -16
  113. data/lib/poolparty/base_packages/ruby.rb +2 -3
  114. data/lib/poolparty/config/allowed_commands.yml +1 -0
  115. data/lib/poolparty/core/array.rb +5 -2
  116. data/lib/poolparty/core/hash.rb +16 -2
  117. data/lib/poolparty/core/string.rb +9 -2
  118. data/lib/poolparty/core/symbol.rb +2 -2
  119. data/lib/poolparty/dependency_resolutions/base.rb +12 -0
  120. data/lib/poolparty/dependency_resolutions/puppet.rb +49 -0
  121. data/lib/poolparty/exceptions/UnacceptableCommand.rb +5 -0
  122. data/lib/poolparty/helpers/console.rb +3 -2
  123. data/lib/poolparty/helpers/display.rb +3 -3
  124. data/lib/poolparty/helpers/messenger.rb +29 -0
  125. data/lib/poolparty/helpers/optioner.rb +6 -2
  126. data/lib/poolparty/helpers/provisioner_base.rb +18 -11
  127. data/lib/poolparty/helpers/provisioners/master.rb +24 -22
  128. data/lib/poolparty/helpers/provisioners/slave.rb +8 -4
  129. data/lib/poolparty/modules/definable_resource.rb +1 -0
  130. data/lib/poolparty/modules/file_writer.rb +11 -10
  131. data/lib/poolparty/modules/method_missing_sugar.rb +1 -1
  132. data/lib/poolparty/modules/pretty_printer.rb +11 -11
  133. data/lib/poolparty/modules/resourcing_dsl.rb +61 -0
  134. data/lib/poolparty/monitors/base_monitor.rb +17 -3
  135. data/lib/poolparty/monitors/monitors/cpu_monitor.rb +15 -0
  136. data/lib/poolparty/monitors/monitors/memory_monitor.rb +23 -0
  137. data/lib/poolparty/net/remote_instance.rb +6 -1
  138. data/lib/poolparty/net/remoter.rb +23 -5
  139. data/lib/poolparty/net/remoter_base.rb +5 -1
  140. data/lib/poolparty/plugins/git.rb +22 -24
  141. data/lib/poolparty/pool/base.rb +22 -6
  142. data/lib/poolparty/pool/cloud.rb +28 -4
  143. data/lib/poolparty/pool/custom_resource.rb +6 -6
  144. data/lib/poolparty/pool/loggable.rb +3 -0
  145. data/lib/poolparty/pool/pool.rb +1 -1
  146. data/lib/poolparty/pool/resource.rb +58 -94
  147. data/lib/poolparty/pool/resources/class_package.rb +6 -6
  148. data/lib/poolparty/pool/resources/conditional.rb +5 -1
  149. data/lib/poolparty/pool/resources/exec.rb +6 -2
  150. data/lib/poolparty/pool/resources/gem.rb +22 -8
  151. data/lib/poolparty/pool/resources/remote_file.rb +5 -1
  152. data/lib/poolparty/pool/resources/symlink.rb +25 -0
  153. data/lib/poolparty/pool/resources/variable.rb +8 -7
  154. data/lib/poolparty/pool/tmp/.ppkeys +3 -0
  155. data/lib/poolparty/pool/tmp/happydayz +1 -0
  156. data/lib/poolparty/pool/tmp/install_master.sh +33 -0
  157. data/lib/poolparty/pool/tmp/pool.spec +11 -0
  158. data/lib/poolparty/pool/tmp/poolparty.pp +600 -0
  159. data/lib/poolparty/pool/tmp/tc-instances.list +1 -0
  160. data/lib/poolparty/templates/cib.xml +54 -0
  161. data/lib/poolparty/templates/ha.cf +12 -3
  162. data/lib/poolparty/templates/haproxy.conf +3 -3
  163. data/lib/poolparty/templates/haresources +3 -0
  164. data/lib/poolparty/templates/poolparty.monitor +14 -0
  165. data/lib/poolparty/templates/puppet.conf +3 -4
  166. data/lib/poolparty/version.rb +1 -1
  167. data/lib/poolparty.rb +9 -6
  168. data/poolparty.gemspec +7 -6
  169. data/setup.rb +3 -3
  170. data/spec/poolparty/bin/console_spec.rb +1 -1
  171. data/spec/poolparty/core/array_spec.rb +5 -0
  172. data/spec/poolparty/core/hash_spec.rb +19 -1
  173. data/spec/poolparty/core/string_spec.rb +13 -0
  174. data/spec/poolparty/dependency_resolutions/base_spec.rb +11 -0
  175. data/spec/poolparty/helpers/messenger_spec.rb +14 -0
  176. data/spec/poolparty/helpers/optioner_spec.rb +2 -1
  177. data/spec/poolparty/helpers/provisioner_base_spec.rb +1 -1
  178. data/spec/poolparty/helpers/provisioners/master_spec.rb +2 -2
  179. data/spec/poolparty/helpers/provisioners/slave_spec.rb +3 -3
  180. data/spec/poolparty/modules/file_writer_spec.rb +9 -0
  181. data/spec/poolparty/monitors/base_monitor_spec.rb +19 -0
  182. data/spec/poolparty/monitors/monitors/cpu_monitor_spec.rb +17 -0
  183. data/spec/poolparty/net/remote_instance_spec.rb +6 -1
  184. data/spec/poolparty/net/remote_spec.rb +51 -42
  185. data/spec/poolparty/net/remoter_spec.rb +2 -1
  186. data/spec/poolparty/plugins/git_spec.rb +2 -2
  187. data/spec/poolparty/pool/base_spec.rb +20 -2
  188. data/spec/poolparty/pool/cloud_spec.rb +30 -1
  189. data/spec/poolparty/pool/custom_resource_spec.rb +2 -2
  190. data/spec/poolparty/pool/plugin_spec.rb +4 -4
  191. data/spec/poolparty/pool/pool_spec.rb +1 -1
  192. data/spec/poolparty/pool/resource_spec.rb +66 -0
  193. data/spec/poolparty/pool/resources/gem_spec.rb +29 -3
  194. data/spec/poolparty/pool/resources/symlink_spec.rb +22 -0
  195. data/spec/poolparty/pool/resources/variable_spec.rb +4 -0
  196. data/spec/poolparty/spec_helper.rb +5 -0
  197. data/tasks/cloud.rake +0 -54
  198. data/tasks/development.rake +0 -12
  199. data/tasks/ec2.rake +1 -16
  200. data/tasks/instance.rake +0 -61
  201. data/test_manifest.pp +286 -166
  202. data/website/index.html +5 -5
  203. data/website/index.txt +3 -3
  204. metadata +137 -8
  205. data/bin/pool-start-monitor +0 -1
  206. data/lib/erlang/eb_server.erl +0 -27
  207. data/lib/poolparty/plugins/gem_package.rb +0 -17
  208. data/spec/poolparty/modules/tmp/willy/nilly.rb +0 -1
@@ -0,0 +1,33 @@
1
+
2
+ touch /etc/apt/sources.list
3
+ echo 'deb http://mirrors.kernel.org/ubuntu hardy main universe' >> /etc/apt/sources.list
4
+ aptitude update -y
5
+ aptitude autoclean
6
+
7
+ echo '#! /usr/bin/ruby1.8
8
+ #--
9
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
10
+ # All rights reserved.
11
+ # See LICENSE.txt for permissions.
12
+ # /usr/bin/gem is broken, so... have to use this until it is fixed
13
+ #++
14
+
15
+
16
+ require "rubygems"
17
+ require "rubygems/gem_runner"
18
+ Gem.manage_gems
19
+
20
+ required_version = Gem::Version::Requirement.new(">= 1.8.0")
21
+ unless required_version.satisfied_by?(Gem::Version.new(RUBY_VERSION))
22
+ puts "Expected Ruby Version #{required_version}, was #{RUBY_VERSION}"
23
+ exit(1)
24
+ end
25
+
26
+ # We need to preserve the original ARGV to use for passing gem options
27
+ # to source gems. If there is a -- in the line, strip all options after
28
+ # it...its for the source building process.
29
+ args = !ARGV.include?("--") ? ARGV.clone : ARGV[0...ARGV.index("--")]
30
+
31
+ Gem::GemRunner.new.run(args)
32
+ ' > /usr/bin/gem
33
+ aptitude install -y puppet puppetmaster
@@ -0,0 +1,11 @@
1
+ cloud :app do
2
+ keypair "fake_keypair"
3
+ minimum_instances "2"
4
+ maximum_instances "4"
5
+ end
6
+
7
+ cloud :rawr do
8
+ keypair "app_rawr"
9
+ minimum_instances "2"
10
+ maximum_instances "2"
11
+ end
@@ -0,0 +1,600 @@
1
+ class poolparty {
2
+ # conditional
3
+
4
+ # $hostname == master
5
+ case $hostname {
6
+ master : {
7
+ # Variables
8
+
9
+ $ha_nodenames = generate('/usr/bin/env', '/var/lib/gems/1.8/bin/server-list-active', '-c', 'name')
10
+ $ha_node_ips = generate('/usr/bin/env', '/var/lib/gems/1.8/bin/server-list-active', '-c', 'ip')
11
+ $ha_timeout = '5s'
12
+ $ha_port = '80'
13
+
14
+ # exec
15
+
16
+
17
+ exec {
18
+ "heartbeat-update-cib":
19
+ command => '/usr/sbin/cibadmin -R -x /etc/ha.d/cib.xml',
20
+ path => '/usr/bin:/bin:/usr/local/bin:$PATH',
21
+ refreshonly => true
22
+ }
23
+
24
+
25
+ # package
26
+
27
+
28
+ # heartbeat-2
29
+ class heartbeat-2 {
30
+
31
+ # remotefile
32
+
33
+
34
+ file {
35
+ "/etc/ha.d/ha.cf":
36
+ owner => 'root',
37
+ require => Package['heartbeat-2'],
38
+ mode => 444,
39
+ name => '/etc/ha.d/ha.cf',
40
+ notify => Service["heartbeat"],
41
+ ensure => 'present',
42
+ content => template("ha.cf")
43
+ }
44
+
45
+
46
+ file {
47
+ "/etc/ha.d/authkeys":
48
+ owner => 'root',
49
+ require => Package['heartbeat-2'],
50
+ mode => 400,
51
+ name => '/etc/ha.d/authkeys',
52
+ notify => Service["heartbeat"],
53
+ ensure => 'present',
54
+ content => template("authkeys")
55
+ }
56
+
57
+
58
+ file {
59
+ "/etc/ha.d/cib.xml":
60
+ owner => 'root',
61
+ require => Package['heartbeat-2'],
62
+ mode => 444,
63
+ name => '/etc/ha.d/cib.xml',
64
+ notify => Exec["heartbeat-update-cib"],
65
+ ensure => 'present',
66
+ content => template("cib.xml")
67
+ }
68
+
69
+
70
+ # service
71
+
72
+
73
+ service {
74
+ "heartbeat":
75
+ enable => true,
76
+ hasstatus => true,
77
+ require => Package['heartbeat-2'],
78
+ name => 'heartbeat',
79
+ ensure => 'running'
80
+ }
81
+
82
+ }
83
+
84
+ include heartbeat-2
85
+ package {
86
+ "heartbeat-2":
87
+ name => 'heartbeat-2',
88
+ ensure => 'installed'
89
+ }
90
+ }
91
+ default : {}
92
+ }
93
+ # $hostname == master
94
+ case $hostname {
95
+ master : {
96
+ # exec
97
+
98
+
99
+ exec {
100
+ "update pem for heartbeat":
101
+ command => 'scp /etc/puppet/ssl/ca/ca_crl.pem root@192.168.0.1:/etc/puppet/ssl/ca',
102
+ path => '/usr/bin:/bin:/usr/local/bin:$PATH',
103
+ refreshonly => true
104
+ }
105
+ }
106
+ default : {}
107
+ }
108
+ # $hostname == master
109
+ case $hostname {
110
+ master : {
111
+ # Variables
112
+
113
+ $name_haproxy = 'app'
114
+ $nodenames_haproxy = generate('/usr/bin/env', '/var/lib/gems/1.8/bin/server-list-active', '-c', 'name')
115
+ $node_ips_haproxy = generate('/usr/bin/env', '/var/lib/gems/1.8/bin/server-list-active', '-c', 'ip')
116
+ $ports_haproxy = [ '80' ]
117
+ $forwarding_port = '8080'
118
+ $proxy_mode = 'http'
119
+
120
+ # remotefile
121
+
122
+
123
+ file {
124
+ "/etc/haproxy.cfg":
125
+ owner => 'root',
126
+ require => Package["haproxy"],
127
+ mode => 644,
128
+ name => '/etc/haproxy.cfg',
129
+ notify => Service["haproxy"],
130
+ ensure => 'present',
131
+ content => template("haproxy.conf")
132
+ }
133
+
134
+
135
+ # call_function
136
+
137
+ line {
138
+ '/etc/default/haproxy_line' :
139
+ file => '/etc/default/haproxy',
140
+ line => 'ENABLED=1',
141
+
142
+ ensure => 'present'
143
+ }
144
+
145
+ line {
146
+ '/etc/default/syslogd_line' :
147
+ file => '/etc/default/syslogd',
148
+ line => 'SYSLOGD="-r"',
149
+
150
+ ensure => 'present'
151
+ }
152
+
153
+ line {
154
+ '/etc/syslog.conf_line' :
155
+ file => '/etc/syslog.conf',
156
+ line => 'local0.* /var/log/haproxy.log',
157
+ notify => Service["sysklogd"],
158
+ ensure => 'present'
159
+ }
160
+
161
+
162
+ # package
163
+
164
+
165
+ package {
166
+ "haproxy":
167
+ name => 'haproxy',
168
+ ensure => 'installed'
169
+ }
170
+
171
+
172
+ # service
173
+
174
+
175
+ service {
176
+ "sysklogd":
177
+ enable => true,
178
+ name => 'sysklogd',
179
+ ensure => [ 'running', 'running' ]
180
+ }
181
+
182
+
183
+ service {
184
+ "haproxy":
185
+ enable => true,
186
+ name => 'haproxy',
187
+ ensure => 'running'
188
+ }
189
+ }
190
+ default : {}
191
+ }
192
+ # $hostname == master
193
+ case $hostname {
194
+ master : {
195
+ # cron
196
+
197
+
198
+ cron {
199
+ "":
200
+ command => '. /etc/profile && which cloud-maintain | /bin/sh',
201
+ minute => '*/3',
202
+ user => 'root',
203
+ ensure => 'present'
204
+ }
205
+ }
206
+ default : {}
207
+ }
208
+ # heartbeat
209
+ class heartbeat {
210
+
211
+ }
212
+
213
+ include heartbeat
214
+ # haproxy
215
+ class haproxy {
216
+
217
+ }
218
+
219
+ include haproxy
220
+ # ruby
221
+ class ruby {
222
+
223
+ # call_function
224
+
225
+ line {
226
+ '/etc/profile_line' :
227
+ file => '/etc/profile',
228
+ line => 'export PATH=$PATH:/var/lib/gems/1.8/bin:/sbin',
229
+
230
+ ensure => 'present'
231
+ }
232
+
233
+
234
+ # package
235
+
236
+
237
+ package {
238
+ "libreadline-ruby1.8":
239
+ name => 'libreadline-ruby1.8',
240
+ ensure => 'present'
241
+ }
242
+
243
+
244
+ package {
245
+ "libruby1.8":
246
+ name => 'libruby1.8',
247
+ ensure => 'present'
248
+ }
249
+
250
+
251
+ package {
252
+ "ruby1.8-dev":
253
+ name => 'ruby1.8-dev',
254
+ ensure => 'present'
255
+ }
256
+
257
+
258
+ package {
259
+ "ruby1.8":
260
+ name => 'ruby1.8',
261
+ ensure => 'present'
262
+ }
263
+
264
+ }
265
+
266
+ include ruby
267
+ # poolparty
268
+ class poolparty {
269
+
270
+ # host
271
+
272
+
273
+ host {
274
+ "master":
275
+ name => 'master',
276
+ ip => '192.168.0.1',
277
+ ensure => 'present'
278
+ }
279
+
280
+
281
+ host {
282
+ "node1":
283
+ name => 'node1',
284
+ ip => '192.168.0.1',
285
+ ensure => 'present'
286
+ }
287
+
288
+
289
+ # cron
290
+
291
+
292
+ cron {
293
+ "puppetd runner":
294
+ command => '. /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master 2>&1',
295
+ name => 'puppetd runner',
296
+ minute => [ 0, 15, 30, 45 ],
297
+ user => 'root',
298
+ ensure => 'present'
299
+ }
300
+
301
+
302
+ # package
303
+
304
+
305
+ package {
306
+ "erlang":
307
+ name => 'erlang',
308
+ ensure => 'present'
309
+ }
310
+
311
+
312
+ # rubygems
313
+ class rubygems {
314
+
315
+ # gempackage
316
+
317
+
318
+ # logging
319
+ class logging {
320
+
321
+ # exec
322
+
323
+
324
+ exec {
325
+ "logging":
326
+ command => 'gem install -y --no-ri --no-rdoc logging',
327
+ cwd => '/tmp',
328
+ require => Package['rubygems'],
329
+ path => '/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/var/lib/gems/1.8/bin',
330
+ unless => 'gem list --local logging | grep logging '
331
+ }
332
+
333
+ }
334
+
335
+ include logging
336
+
337
+
338
+ # xml-simple
339
+ class xml-simple {
340
+
341
+ # exec
342
+
343
+
344
+ exec {
345
+ "xml-simple":
346
+ command => 'gem install -y --no-ri --no-rdoc xml-simple',
347
+ cwd => '/tmp',
348
+ require => Package['rubygems'],
349
+ path => '/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/var/lib/gems/1.8/bin',
350
+ unless => 'gem list --local xml-simple | grep xml-simple '
351
+ }
352
+
353
+
354
+ # gempackage
355
+
356
+
357
+ # grempe-amazon-ec2
358
+ class grempe-amazon-ec2 {
359
+
360
+ # exec
361
+
362
+
363
+ exec {
364
+ "grempe-amazon-ec2":
365
+ command => 'gem install -y --no-ri --no-rdoc --source http://gems.github.com grempe-amazon-ec2',
366
+ cwd => '/tmp',
367
+ require => Exec['xml-simple'],
368
+ path => '/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/var/lib/gems/1.8/bin',
369
+ unless => 'gem list --local grempe-amazon-ec2 | grep grempe-amazon-ec2 '
370
+ }
371
+
372
+ }
373
+
374
+ include grempe-amazon-ec2
375
+
376
+ }
377
+
378
+ include xml-simple
379
+
380
+
381
+ # hoe
382
+ class hoe {
383
+
384
+ # exec
385
+
386
+
387
+ exec {
388
+ "hoe":
389
+ command => 'gem install -y --no-ri --no-rdoc hoe',
390
+ cwd => '/tmp',
391
+ require => Package['rubygems'],
392
+ path => '/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/var/lib/gems/1.8/bin',
393
+ unless => 'gem list --local hoe | grep hoe '
394
+ }
395
+
396
+
397
+ # gempackage
398
+
399
+
400
+ # open4
401
+ class open4 {
402
+
403
+ # exec
404
+
405
+
406
+ exec {
407
+ "open4":
408
+ command => 'gem install -y --no-ri --no-rdoc open4',
409
+ cwd => '/tmp',
410
+ require => Exec['hoe'],
411
+ path => '/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/var/lib/gems/1.8/bin',
412
+ unless => 'gem list --local open4 | grep open4 '
413
+ }
414
+
415
+ }
416
+
417
+ include open4
418
+
419
+
420
+ # ParseTree
421
+ class parsetree {
422
+
423
+ # exec
424
+
425
+
426
+ exec {
427
+ "ParseTree":
428
+ command => 'gem install -y --no-ri --no-rdoc --version 2.2.0 ParseTree',
429
+ cwd => '/tmp',
430
+ require => Exec['hoe'],
431
+ path => '/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/var/lib/gems/1.8/bin',
432
+ unless => 'gem list --local ParseTree | grep ParseTree | grep 2.2.0'
433
+ }
434
+
435
+
436
+ # gempackage
437
+
438
+
439
+ # ruby2ruby
440
+ class ruby2ruby {
441
+
442
+ # exec
443
+
444
+
445
+ exec {
446
+ "ruby2ruby":
447
+ command => 'gem install -y --no-ri --no-rdoc ruby2ruby',
448
+ cwd => '/tmp',
449
+ require => Exec['ParseTree'],
450
+ path => '/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/var/lib/gems/1.8/bin',
451
+ unless => 'gem list --local ruby2ruby | grep ruby2ruby '
452
+ }
453
+
454
+ }
455
+
456
+ include ruby2ruby
457
+
458
+
459
+ # activesupport
460
+ class activesupport {
461
+
462
+ # exec
463
+
464
+
465
+ exec {
466
+ "activesupport":
467
+ command => 'gem install -y --no-ri --no-rdoc activesupport',
468
+ cwd => '/tmp',
469
+ require => Exec['ParseTree'],
470
+ path => '/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/var/lib/gems/1.8/bin',
471
+ unless => 'gem list --local activesupport | grep activesupport '
472
+ }
473
+
474
+
475
+ # gempackage
476
+
477
+
478
+ # auser-poolparty
479
+ class auser-poolparty {
480
+
481
+ # exec
482
+
483
+
484
+ exec {
485
+ "auser-poolparty":
486
+ command => 'gem install -y --no-ri --no-rdoc --source http://gems.github.com auser-poolparty',
487
+ cwd => '/tmp',
488
+ require => Exec['activesupport'],
489
+ path => '/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/var/lib/gems/1.8/bin',
490
+ unless => 'gem list --local auser-poolparty | grep auser-poolparty '
491
+ }
492
+
493
+ }
494
+
495
+ include auser-poolparty
496
+
497
+ }
498
+
499
+ include activesupport
500
+
501
+
502
+ # RubyInline
503
+ class rubyinline {
504
+
505
+ # exec
506
+
507
+
508
+ exec {
509
+ "RubyInline":
510
+ command => 'gem install -y --no-ri --no-rdoc RubyInline',
511
+ cwd => '/tmp',
512
+ require => Exec['ParseTree'],
513
+ path => '/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/var/lib/gems/1.8/bin',
514
+ unless => 'gem list --local RubyInline | grep RubyInline '
515
+ }
516
+
517
+ }
518
+
519
+ include RubyInline
520
+
521
+ }
522
+
523
+ include ParseTree
524
+
525
+ }
526
+
527
+ include hoe
528
+
529
+ }
530
+
531
+ include rubygems
532
+ package {
533
+ "rubygems":
534
+ name => 'rubygems',
535
+ ensure => 'present'
536
+ }
537
+
538
+ }
539
+
540
+ include poolparty
541
+ # Custom functions
542
+ define line($file, $line, $ensure = 'present', $notify=[]) {
543
+ case $ensure {
544
+ default: { err ( "unknown ensure value ${ensure}" ) }
545
+ present: {
546
+ exec {
547
+ "/usr/bin/env echo '${line}' >> '${file}'": unless => "/usr/bin/env grep -qFx '${line}' '${file}'",
548
+ notify => $notify
549
+ }
550
+ }
551
+ absent: {
552
+ exec {
553
+ "/usr/bin/env sed -i '' -e '/^${line}$/d' '${file}'": onlyif => "/usr/bin/env grep -qFx '${line}' '${file}'",
554
+ notify => $notify
555
+ }
556
+ }
557
+ }
558
+ }
559
+ define append_if_no_such_line($file, $line, $refreshonly = 'false') {
560
+ exec { "/bin/echo '$line' >> '$file'":
561
+ unless => "/bin/grep -Fxqe '$line' '$file'",
562
+ path => "/bin",
563
+ refreshonly => $refreshonly,
564
+ }
565
+ }
566
+
567
+ define delete_lines($file, $pattern) {
568
+ exec { "sed -i -r -e '/$pattern/d' $file":
569
+ path => "/bin",
570
+ onlyif => "/bin/grep -E '$pattern' '$file'",
571
+ }
572
+ }
573
+
574
+ # Serve subversion-based code from a local location. The job of this
575
+ # module is to check the data out from subversion and keep it up to
576
+ # date, especially useful for providing data to your Puppet server.
577
+ define svnserve($source, $path, $user = false, $password = false) {
578
+ file { $path:
579
+ ensure => directory,
580
+ owner => root,
581
+ group => root
582
+ }
583
+ $svncmd = $user ? {
584
+ false => "/usr/bin/svn co --non-interactive $source/$name .",
585
+ default => "/usr/bin/svn co --non-interactive --username $user --password '$password' $source/$name ."
586
+ }
587
+ exec { "svnco-$name":
588
+ command => $svncmd,
589
+ cwd => $path,
590
+ require => File[$path],
591
+ creates => "$path/.svn"
592
+ }
593
+ exec { "svnupdate-$name":
594
+ command => "/usr/bin/svn update",
595
+ require => Exec["svnco-$name"],
596
+ onlyif => '/usr/bin/svn status -u --non-interactive | /bin/grep "*"',
597
+ cwd => $path
598
+ }
599
+ }
600
+ }
@@ -0,0 +1,54 @@
1
+ <?xml version="1.0" ?>
2
+ <cib admin_epoch="0" epoch="0" num_updates="0">
3
+ <configuration>
4
+ <crm_config>
5
+ <cluster_property_set id="cib-bootstrap-options">
6
+ <attributes>
7
+ <nvpair id="cib-bootstrap-options-symmetric-cluster" name="symmetric-cluster" value="true"/>
8
+ <nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="stop"/>
9
+ <nvpair id="cib-bootstrap-options-default-resource-stickiness" name="default-resource-stickiness" value="0"/>
10
+ <nvpair id="cib-bootstrap-options-default-resource-failure-stickiness" name="default-resource-failure-stickiness" value="0"/>
11
+ <nvpair id="cib-bootstrap-options-stonith-enabled" name="stonith-enabled" value="false"/>
12
+ <nvpair id="cib-bootstrap-options-stonith-action" name="stonith-action" value="reboot"/>
13
+ <nvpair id="cib-bootstrap-options-startup-fencing" name="startup-fencing" value="true"/>
14
+ <nvpair id="cib-bootstrap-options-stop-orphan-resources" name="stop-orphan-resources" value="true"/>
15
+ <nvpair id="cib-bootstrap-options-stop-orphan-actions" name="stop-orphan-actions" value="true"/>
16
+ <nvpair id="cib-bootstrap-options-remove-after-stop" name="remove-after-stop" value="false"/>
17
+ <nvpair id="cib-bootstrap-options-short-resource-names" name="short-resource-names" value="true"/>
18
+ <nvpair id="cib-bootstrap-options-transition-idle-timeout" name="transition-idle-timeout" value="5min"/>
19
+ <nvpair id="cib-bootstrap-options-default-action-timeout" name="default-action-timeout" value="20s"/>
20
+ <nvpair id="cib-bootstrap-options-is-managed-default" name="is-managed-default" value="true"/>
21
+ <nvpair id="cib-bootstrap-options-cluster-delay" name="cluster-delay" value="60s"/>
22
+ <nvpair id="cib-bootstrap-options-pe-error-series-max" name="pe-error-series-max" value="-1"/>
23
+ <nvpair id="cib-bootstrap-options-pe-warn-series-max" name="pe-warn-series-max" value="-1"/>
24
+ <nvpair id="cib-bootstrap-options-pe-input-series-max" name="pe-input-series-max" value="-1"/>
25
+ </attributes>
26
+ </cluster_property_set>
27
+ </crm_config>
28
+ <nodes/>
29
+ <resources>
30
+ <% ha_nodenames.each_with_index do |name, index| %>
31
+ <primitive class="ocf" id="IPaddr_<%= name %>" provider="heartbeat" type="IPaddr">
32
+ <operations>
33
+ <op id="IPaddr_<%= name %>_mon" interval="5s" name="monitor" timeout="<%= ha_timeout %>"/>
34
+ </operations>
35
+ <instance_attributes id="IPaddr_<%= name %>_inst_attr">
36
+ <attributes>
37
+ <nvpair id="IPaddr_<%= name %>_attr_0" name="ip" value="<%= ha_node_ips[index] %>"/>
38
+ </attributes>
39
+ </instance_attributes>
40
+ </primitive>
41
+ <% end %>
42
+ </resources>
43
+ <constraints>
44
+ <% ha_nodenames.each_with_index do |name, index| %>
45
+ <rsc_location id="rsc_location_IPaddr_<%= name %>" rsc="IPaddr_<%= name %>">
46
+ <rule id="prefered_location_IPaddr_<%= name %>" score="100">
47
+ <expression attribute="#uname" id="prefered_location_IPaddr_<%= name %>_expr" operation="eq" value="<%= name %>"/>
48
+ </rule>
49
+ </rsc_location>
50
+ <% end %>
51
+ </constraints>
52
+ </configuration>
53
+ <status/>
54
+ </cib>