puppet 0.9.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (182) hide show
  1. data/CHANGELOG +0 -0
  2. data/COPYING +340 -0
  3. data/LICENSE +17 -0
  4. data/README +24 -0
  5. data/Rakefile +294 -0
  6. data/TODO +4 -0
  7. data/bin/cf2puppet +186 -0
  8. data/bin/puppet +176 -0
  9. data/bin/puppetca +213 -0
  10. data/bin/puppetd +246 -0
  11. data/bin/puppetdoc +184 -0
  12. data/bin/puppetmasterd +258 -0
  13. data/examples/code/allatonce +13 -0
  14. data/examples/code/assignments +11 -0
  15. data/examples/code/classing +35 -0
  16. data/examples/code/components +73 -0
  17. data/examples/code/execs +16 -0
  18. data/examples/code/failers/badclassnoparam +10 -0
  19. data/examples/code/failers/badclassparam +10 -0
  20. data/examples/code/failers/badcompnoparam +9 -0
  21. data/examples/code/failers/badcompparam +9 -0
  22. data/examples/code/failers/badtypeparam +3 -0
  23. data/examples/code/file.bl +11 -0
  24. data/examples/code/filedefaults +10 -0
  25. data/examples/code/fileparsing +116 -0
  26. data/examples/code/filerecursion +15 -0
  27. data/examples/code/functions +3 -0
  28. data/examples/code/groups +7 -0
  29. data/examples/code/head +30 -0
  30. data/examples/code/importing +8 -0
  31. data/examples/code/nodes +20 -0
  32. data/examples/code/one +8 -0
  33. data/examples/code/relationships +34 -0
  34. data/examples/code/selectors +28 -0
  35. data/examples/code/simpletests +11 -0
  36. data/examples/code/snippets/argumentdefaults +14 -0
  37. data/examples/code/snippets/casestatement +39 -0
  38. data/examples/code/snippets/classheirarchy.pp +15 -0
  39. data/examples/code/snippets/classincludes.pp +17 -0
  40. data/examples/code/snippets/classpathtest +11 -0
  41. data/examples/code/snippets/dirchmod +19 -0
  42. data/examples/code/snippets/failmissingexecpath.pp +13 -0
  43. data/examples/code/snippets/falsevalues.pp +3 -0
  44. data/examples/code/snippets/filecreate +11 -0
  45. data/examples/code/snippets/implicititeration +15 -0
  46. data/examples/code/snippets/multipleinstances +7 -0
  47. data/examples/code/snippets/namevartest +9 -0
  48. data/examples/code/snippets/scopetest +13 -0
  49. data/examples/code/snippets/selectorvalues.pp +22 -0
  50. data/examples/code/snippets/simpledefaults +5 -0
  51. data/examples/code/snippets/simpleselector +38 -0
  52. data/examples/code/svncommit +13 -0
  53. data/examples/root/bin/sleeper +69 -0
  54. data/examples/root/etc/configfile +0 -0
  55. data/examples/root/etc/debian-passwd +29 -0
  56. data/examples/root/etc/debian-syslog.conf +71 -0
  57. data/examples/root/etc/init.d/sleeper +65 -0
  58. data/examples/root/etc/otherfile +0 -0
  59. data/examples/root/etc/puppet/fileserver.conf +3 -0
  60. data/examples/root/etc/puppet/puppetmasterd.conf +10 -0
  61. data/ext/module:puppet +195 -0
  62. data/install.rb +270 -0
  63. data/lib/puppet.rb +249 -0
  64. data/lib/puppet/base64.rb +19 -0
  65. data/lib/puppet/client.rb +519 -0
  66. data/lib/puppet/config.rb +49 -0
  67. data/lib/puppet/daemon.rb +208 -0
  68. data/lib/puppet/element.rb +71 -0
  69. data/lib/puppet/event.rb +259 -0
  70. data/lib/puppet/log.rb +321 -0
  71. data/lib/puppet/metric.rb +250 -0
  72. data/lib/puppet/parsedfile.rb +38 -0
  73. data/lib/puppet/parser/ast.rb +1560 -0
  74. data/lib/puppet/parser/interpreter.rb +150 -0
  75. data/lib/puppet/parser/lexer.rb +226 -0
  76. data/lib/puppet/parser/parser.rb +1354 -0
  77. data/lib/puppet/parser/scope.rb +755 -0
  78. data/lib/puppet/server.rb +170 -0
  79. data/lib/puppet/server/authstore.rb +227 -0
  80. data/lib/puppet/server/ca.rb +140 -0
  81. data/lib/puppet/server/filebucket.rb +147 -0
  82. data/lib/puppet/server/fileserver.rb +477 -0
  83. data/lib/puppet/server/logger.rb +43 -0
  84. data/lib/puppet/server/master.rb +103 -0
  85. data/lib/puppet/server/servlet.rb +247 -0
  86. data/lib/puppet/sslcertificates.rb +737 -0
  87. data/lib/puppet/statechange.rb +150 -0
  88. data/lib/puppet/storage.rb +95 -0
  89. data/lib/puppet/transaction.rb +179 -0
  90. data/lib/puppet/transportable.rb +151 -0
  91. data/lib/puppet/type.rb +1354 -0
  92. data/lib/puppet/type/component.rb +141 -0
  93. data/lib/puppet/type/cron.rb +543 -0
  94. data/lib/puppet/type/exec.rb +316 -0
  95. data/lib/puppet/type/group.rb +152 -0
  96. data/lib/puppet/type/nameservice.rb +3 -0
  97. data/lib/puppet/type/nameservice/netinfo.rb +173 -0
  98. data/lib/puppet/type/nameservice/objectadd.rb +146 -0
  99. data/lib/puppet/type/nameservice/posix.rb +200 -0
  100. data/lib/puppet/type/package.rb +420 -0
  101. data/lib/puppet/type/package/apt.rb +70 -0
  102. data/lib/puppet/type/package/dpkg.rb +108 -0
  103. data/lib/puppet/type/package/rpm.rb +81 -0
  104. data/lib/puppet/type/package/sun.rb +117 -0
  105. data/lib/puppet/type/package/yum.rb +58 -0
  106. data/lib/puppet/type/pfile.rb +569 -0
  107. data/lib/puppet/type/pfile/checksum.rb +219 -0
  108. data/lib/puppet/type/pfile/create.rb +108 -0
  109. data/lib/puppet/type/pfile/group.rb +129 -0
  110. data/lib/puppet/type/pfile/mode.rb +131 -0
  111. data/lib/puppet/type/pfile/source.rb +264 -0
  112. data/lib/puppet/type/pfile/type.rb +31 -0
  113. data/lib/puppet/type/pfile/uid.rb +166 -0
  114. data/lib/puppet/type/pfilebucket.rb +80 -0
  115. data/lib/puppet/type/pprocess.rb +97 -0
  116. data/lib/puppet/type/service.rb +347 -0
  117. data/lib/puppet/type/service/base.rb +17 -0
  118. data/lib/puppet/type/service/debian.rb +50 -0
  119. data/lib/puppet/type/service/init.rb +145 -0
  120. data/lib/puppet/type/service/smf.rb +29 -0
  121. data/lib/puppet/type/state.rb +182 -0
  122. data/lib/puppet/type/symlink.rb +183 -0
  123. data/lib/puppet/type/tidy.rb +183 -0
  124. data/lib/puppet/type/typegen.rb +149 -0
  125. data/lib/puppet/type/typegen/filerecord.rb +243 -0
  126. data/lib/puppet/type/typegen/filetype.rb +316 -0
  127. data/lib/puppet/type/user.rb +290 -0
  128. data/lib/puppet/util.rb +138 -0
  129. data/test/certmgr/certmgr.rb +265 -0
  130. data/test/client/client.rb +203 -0
  131. data/test/executables/puppetbin.rb +53 -0
  132. data/test/executables/puppetca.rb +79 -0
  133. data/test/executables/puppetd.rb +71 -0
  134. data/test/executables/puppetmasterd.rb +153 -0
  135. data/test/executables/puppetmodule.rb +60 -0
  136. data/test/language/ast.rb +412 -0
  137. data/test/language/interpreter.rb +71 -0
  138. data/test/language/scope.rb +412 -0
  139. data/test/language/snippets.rb +445 -0
  140. data/test/other/events.rb +111 -0
  141. data/test/other/log.rb +195 -0
  142. data/test/other/metrics.rb +92 -0
  143. data/test/other/overrides.rb +115 -0
  144. data/test/other/parsedfile.rb +31 -0
  145. data/test/other/relationships.rb +113 -0
  146. data/test/other/state.rb +106 -0
  147. data/test/other/storage.rb +39 -0
  148. data/test/other/transactions.rb +235 -0
  149. data/test/parser/lexer.rb +120 -0
  150. data/test/parser/parser.rb +180 -0
  151. data/test/puppet/conffiles.rb +104 -0
  152. data/test/puppet/defaults.rb +100 -0
  153. data/test/puppet/error.rb +23 -0
  154. data/test/puppet/utiltest.rb +120 -0
  155. data/test/puppettest.rb +774 -0
  156. data/test/server/authstore.rb +209 -0
  157. data/test/server/bucket.rb +227 -0
  158. data/test/server/ca.rb +201 -0
  159. data/test/server/fileserver.rb +710 -0
  160. data/test/server/logger.rb +175 -0
  161. data/test/server/master.rb +150 -0
  162. data/test/server/server.rb +130 -0
  163. data/test/tagging/tagging.rb +80 -0
  164. data/test/test +51 -0
  165. data/test/types/basic.rb +119 -0
  166. data/test/types/component.rb +272 -0
  167. data/test/types/cron.rb +261 -0
  168. data/test/types/exec.rb +273 -0
  169. data/test/types/file.rb +616 -0
  170. data/test/types/filebucket.rb +167 -0
  171. data/test/types/fileignoresource.rb +287 -0
  172. data/test/types/filesources.rb +587 -0
  173. data/test/types/filetype.rb +162 -0
  174. data/test/types/group.rb +271 -0
  175. data/test/types/package.rb +205 -0
  176. data/test/types/query.rb +101 -0
  177. data/test/types/service.rb +100 -0
  178. data/test/types/symlink.rb +93 -0
  179. data/test/types/tidy.rb +124 -0
  180. data/test/types/type.rb +135 -0
  181. data/test/types/user.rb +371 -0
  182. metadata +243 -0
@@ -0,0 +1,13 @@
1
+ # $Id: allatonce 576 2005-08-23 16:09:14Z luke $
2
+
3
+ define thingie {
4
+ file { "/tmp/classtest": create => true, mode => 755 }
5
+ #testing {}
6
+ }
7
+
8
+ class testing {
9
+ thingie { "componentname": }
10
+ }
11
+
12
+ #component {}
13
+ testing { "testingname": }
@@ -0,0 +1,11 @@
1
+ # $Id: assignments 576 2005-08-23 16:09:14Z luke $
2
+
3
+ $goodness = sunos
4
+
5
+ $subvariable = $goodness
6
+
7
+ $yayness = "this is a string of text"
8
+
9
+ #$sleeper = service { sleeper:
10
+ # running => "1"
11
+ #}
@@ -0,0 +1,35 @@
1
+ # $Id: classing 576 2005-08-23 16:09:14Z luke $
2
+
3
+ # define the server as a class
4
+
5
+ import "components"
6
+
7
+ class base() {
8
+ # how do i handle components that don't take arguments? do they still
9
+ # require a name?
10
+ sudo { }
11
+ }
12
+
13
+ class server inherits base {
14
+ file { "/tmp/puppetfiletest":
15
+ create => true
16
+ }
17
+ }
18
+
19
+ class webserver(docroot) inherits server {
20
+ apache {
21
+ php => false,
22
+ docroot => $docroot,
23
+ user => http,
24
+ group => http
25
+ }
26
+ }
27
+
28
+ class sleepserver(path) inherits server {
29
+ sleeper {
30
+ path => $path,
31
+ mode => 644
32
+ }
33
+ }
34
+
35
+ # see 'nodes' for how to handle nodes
@@ -0,0 +1,73 @@
1
+ # $Id: components 587 2005-08-24 02:53:17Z luke $
2
+
3
+ # i still have no 'require'-like functionality, and i should also
4
+ # have 'recommend'-like functionality...
5
+ define apache(php,docroot,user,group) {
6
+ package { apache:
7
+ version => "2.0.53"
8
+ }
9
+ service { apache:
10
+ running => true
11
+ }
12
+
13
+
14
+ # this definitely won't parse
15
+ #if $php == "true" {
16
+ # # this needs to do two things:
17
+ # # - mark a dependency
18
+ # # - cause this apache component to receive refresh events generated by php
19
+ # #require("php")
20
+ # $var = value
21
+ #}
22
+
23
+ #file { "../examples/root/etc/configfile":
24
+ # owner => $user
25
+ #}
26
+ }
27
+
28
+ define sudo() {
29
+ package { sudo:
30
+ version => "1.6.8p7"
31
+ }
32
+ file { "/etc/sudoers":
33
+ owner => root,
34
+ group => root,
35
+ mode => "440"
36
+ }
37
+ }
38
+
39
+ define ssh {
40
+ package { ssh:
41
+ version => "3.4.4.4"
42
+ }
43
+ service { "sshd":
44
+ running => true
45
+ }
46
+ }
47
+
48
+ define sleeper(path,mode) {
49
+ Service {
50
+ path => "../examples/root/etc/init.d"
51
+ }
52
+
53
+ service { sleeper:
54
+ running => true,
55
+ path => "../examples/root/etc/init.d"
56
+ }
57
+ file { $path:
58
+ mode => $mode
59
+ }
60
+ $files = ["/tmp/testness","/tmp/funtest"]
61
+ file { $files:
62
+ create => true
63
+ }
64
+ }
65
+
66
+ #apache { "test":
67
+ # php => false,
68
+ # docroot => "/export/html",
69
+ # user => "www-data",
70
+ # group => "www-data"
71
+ #}
72
+
73
+ #ssh { "yucko":}
@@ -0,0 +1,16 @@
1
+ $path = "/usr/bin:/bin"
2
+
3
+ exec { "mkdir -p /tmp/fakedir":
4
+ path => $path
5
+ }
6
+
7
+ exec { "rm -rf /tmp/fakedir":
8
+ path => $path
9
+ }
10
+
11
+ exec { "touch /this/directory/does/not/exist":
12
+ path => $path,
13
+ returns => 1
14
+ }
15
+
16
+
@@ -0,0 +1,10 @@
1
+ class comp() {
2
+ file { "/etc/passwd":
3
+ mode => 644
4
+ }
5
+ }
6
+
7
+ # this argument is invalid, thus we should get a falure
8
+ comp {
9
+ fakearg => "yay"
10
+ }
@@ -0,0 +1,10 @@
1
+ class comp(arg1) {
2
+ file { "/etc/passwd":
3
+ mode => 644
4
+ }
5
+ }
6
+
7
+ # i've specified an arg but it's an invalid one
8
+ comp {
9
+ fakearg => "yay"
10
+ }
@@ -0,0 +1,9 @@
1
+ define comp() {
2
+ file { "/etc/passwd":
3
+ mode => 644
4
+ }
5
+ }
6
+
7
+ comp {
8
+ fakearg => "yay"
9
+ }
@@ -0,0 +1,9 @@
1
+ define comp(arg1) {
2
+ file { "/etc/passwd":
3
+ mode => 644
4
+ }
5
+ }
6
+
7
+ comp {
8
+ fakearg => "yay"
9
+ }
@@ -0,0 +1,3 @@
1
+ file { "/etc/passwd":
2
+ fakeparam => 644
3
+ }
@@ -0,0 +1,11 @@
1
+ # $Id: file.bl 576 2005-08-23 16:09:14Z luke $
2
+
3
+ file {
4
+ "/tmp/atest": create => true, mode => 755;
5
+ "/tmp/btest": create => true, mode => 755
6
+ }
7
+
8
+ file {
9
+ "/tmp/ctest": create => true;
10
+ "/tmp/dtest": create => true;
11
+ }
@@ -0,0 +1,10 @@
1
+ # $Id: filedefaults 576 2005-08-23 16:09:14Z luke $
2
+
3
+ File {
4
+ mode => 755,
5
+ recurse => true
6
+ }
7
+
8
+ file { "/tmp/filedefaultstest":
9
+ create => true
10
+ }
@@ -0,0 +1,116 @@
1
+ # $Id: fileparsing 576 2005-08-23 16:09:14Z luke $
2
+
3
+ # this will eventually parse different config files
4
+
5
+ # this creates the 'passwd' type, but it does not create any instances
6
+ filetype { "passwd":
7
+ linesplit => "\n",
8
+ escapednewlines => false
9
+ }
10
+
11
+
12
+ # this creates the 'PasswdUser' type, but again, no instances
13
+ filerecord { "user":
14
+ filetype => passwd,
15
+ fields => [name, password, uid, gid, gcos, home, shell],
16
+ namevar => name,
17
+ splitchar => ":"
18
+
19
+ }
20
+
21
+ filetype { ini:
22
+ linesplit => "\n\n"
23
+ }
24
+
25
+ # ini files are different because we don't really care about validating fields
26
+ # or at least, we can't do it for most files...
27
+ filerecord { "initrecord":
28
+ filetype => ini,
29
+ fields => [name, password, uid, gid, gcos, home, shell],
30
+ namevar => name,
31
+ splitchar => ":"
32
+
33
+ }
34
+
35
+ # this won't work for multiple record types, will it?
36
+ # or at least, it requires that we specify multiple times
37
+ # ah, and it doesn't specify which of the available record types
38
+ # it works for...
39
+ passwd { user:
40
+ complete => true, # manage the whole file
41
+ path => "/etc/passwd"
42
+ }
43
+
44
+ user { yaytest:
45
+ password => x,
46
+ uid => 10000,
47
+ gid => 10000,
48
+ home => "/home/yaytest",
49
+ gcos => "The Yaytest",
50
+ shell => "/bin/sh"
51
+ }
52
+ # there seems to be an intrinsic problem here -- i've got subtypes that only
53
+ # make sense when an instance of the super type already exists, and i need
54
+ # to associate the instances of the subtype with the instances of the supertype
55
+ # even if i created the parsers manually, I'd have the same problem
56
+
57
+ # this is the crux of it -- i want to be able to say 'user' here without having
58
+ # to specify the file, which leaves two options:
59
+ # 1) associate the record type with a filetype instance (BAD)
60
+ # 2) once the filetype and record type are created, have another command
61
+ # that specifically creates a filetype instance and gives names for instances
62
+ # of its record types
63
+
64
+ define syslog {
65
+
66
+ # create a new type, with all defaults
67
+ filetype { "syslog":
68
+ escapednewlines => true
69
+ }
70
+
71
+ filerecord { "log":
72
+ filetype => syslog,
73
+ regex => "^([^#\s]+)\s+(\S+)$",
74
+ joinchar => "\t",
75
+ fields => [logs, dest]
76
+ }
77
+
78
+ # these two should just be supported within the filetypes
79
+ filerecord { "comment":
80
+ filetype => syslog,
81
+ regex => "^(#.*)$",
82
+ joinchar => "s",
83
+ fields => [comment]
84
+ }
85
+
86
+ filerecord { "blank":
87
+ filetype => syslog,
88
+ regex => "^(\s*)$",
89
+ joinchar => "s",
90
+ fields => blank
91
+ }
92
+ }
93
+
94
+ define cron {
95
+ filetype { "usercrontab":
96
+ }
97
+
98
+ # this won't actually work, of course
99
+ filerecord { "cronjob":
100
+ filetype => crontab,
101
+ regex => "^([^#\s]+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(.+)$",
102
+ joinchar => " ",
103
+ fields => [minute, hour, day, month, weekday, command],
104
+ defaults => ["*", "*", "*", "*", "*", nil],
105
+ optional => [minute, hour, day, month, weekday]
106
+ }
107
+
108
+ crontab { "luke":
109
+ }
110
+ }
111
+
112
+ # XXX this doesn't work in the slightest
113
+ define crontab(name,path) {
114
+ usercrontab { "${path}/${name}":
115
+ }
116
+ }
@@ -0,0 +1,15 @@
1
+ # $Id: filerecursion 576 2005-08-23 16:09:14Z luke $
2
+
3
+ file { "/tmp/dirtest/b/a":
4
+ mode => 755,
5
+ }
6
+
7
+ file { "/tmp/dirtest":
8
+ mode => 755,
9
+ recurse => true,
10
+ }
11
+
12
+ file { "/tmp/dirtest/b/b":
13
+ mode => 644,
14
+ }
15
+
@@ -0,0 +1,3 @@
1
+ # $Id: functions 576 2005-08-23 16:09:14Z luke $
2
+
3
+ $yaytest = fact("operatingsystem")
@@ -0,0 +1,7 @@
1
+ # $Id: groups 576 2005-08-23 16:09:14Z luke $
2
+
3
+ # there need to be two forms of adding to groups:
4
+ # add the current host to a group, and add a list of hosts to a
5
+ # group by name
6
+
7
+ $group = "crap"
@@ -0,0 +1,30 @@
1
+ # $Id: head 587 2005-08-24 02:53:17Z luke $
2
+
3
+ # this file is responsible for importing all of the files we want to actually test
4
+
5
+ # these are all of the simple tests
6
+ import "simpletests"
7
+ import "assignments"
8
+ import "selectors"
9
+ #import "iftest"
10
+ import "importing"
11
+ import "execs"
12
+ import "filedefaults"
13
+
14
+ # facts are now imported into the top of the namespace
15
+ #import "facts"
16
+
17
+ # obsoleted
18
+ #import "functions"
19
+
20
+ # files we no longer need to import directly, or at all in some cases
21
+ #import "one"
22
+ #import "classing"
23
+ #import "components"
24
+ #import "file.bl"
25
+ #import "fileparsing.disabled"
26
+ #import "groups"
27
+
28
+ # this imports the more complex files
29
+ import "allatonce" # imports classing and components
30
+ import "nodes" # imports classing and components
@@ -0,0 +1,8 @@
1
+ # $Id: importing 576 2005-08-23 16:09:14Z luke $
2
+
3
+ #import "groups"
4
+ # testing import loops
5
+ import "importing"
6
+
7
+ $name = "value"
8
+ $system = $operatingsystem
@@ -0,0 +1,20 @@
1
+ # $Id: nodes 576 2005-08-23 16:09:14Z luke $
2
+
3
+ # define nodes
4
+
5
+ #service.setpath("../examples/root/etc/init.d")
6
+
7
+ Service {
8
+ path => "../examples/root/etc/init.d"
9
+ }
10
+
11
+ import "classing"
12
+
13
+ sleepserver {
14
+ path => $operatingsystem ? {
15
+ sunos => "../examples/root/etc/configfile",
16
+ hpux => "../examples/other/etc/configfile",
17
+ default => "../examples/root/etc/configfile"
18
+ },
19
+ schedule => true
20
+ }
@@ -0,0 +1,8 @@
1
+ # $Id: one 576 2005-08-23 16:09:14Z luke $
2
+
3
+ # this service doesn't actually exist, so we noop it
4
+ # and this way, we can test noop :)
5
+ service { "funtest":
6
+ running => "0",
7
+ noop => true
8
+ }