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.
- data/CHANGELOG +0 -0
- data/COPYING +340 -0
- data/LICENSE +17 -0
- data/README +24 -0
- data/Rakefile +294 -0
- data/TODO +4 -0
- data/bin/cf2puppet +186 -0
- data/bin/puppet +176 -0
- data/bin/puppetca +213 -0
- data/bin/puppetd +246 -0
- data/bin/puppetdoc +184 -0
- data/bin/puppetmasterd +258 -0
- data/examples/code/allatonce +13 -0
- data/examples/code/assignments +11 -0
- data/examples/code/classing +35 -0
- data/examples/code/components +73 -0
- data/examples/code/execs +16 -0
- data/examples/code/failers/badclassnoparam +10 -0
- data/examples/code/failers/badclassparam +10 -0
- data/examples/code/failers/badcompnoparam +9 -0
- data/examples/code/failers/badcompparam +9 -0
- data/examples/code/failers/badtypeparam +3 -0
- data/examples/code/file.bl +11 -0
- data/examples/code/filedefaults +10 -0
- data/examples/code/fileparsing +116 -0
- data/examples/code/filerecursion +15 -0
- data/examples/code/functions +3 -0
- data/examples/code/groups +7 -0
- data/examples/code/head +30 -0
- data/examples/code/importing +8 -0
- data/examples/code/nodes +20 -0
- data/examples/code/one +8 -0
- data/examples/code/relationships +34 -0
- data/examples/code/selectors +28 -0
- data/examples/code/simpletests +11 -0
- data/examples/code/snippets/argumentdefaults +14 -0
- data/examples/code/snippets/casestatement +39 -0
- data/examples/code/snippets/classheirarchy.pp +15 -0
- data/examples/code/snippets/classincludes.pp +17 -0
- data/examples/code/snippets/classpathtest +11 -0
- data/examples/code/snippets/dirchmod +19 -0
- data/examples/code/snippets/failmissingexecpath.pp +13 -0
- data/examples/code/snippets/falsevalues.pp +3 -0
- data/examples/code/snippets/filecreate +11 -0
- data/examples/code/snippets/implicititeration +15 -0
- data/examples/code/snippets/multipleinstances +7 -0
- data/examples/code/snippets/namevartest +9 -0
- data/examples/code/snippets/scopetest +13 -0
- data/examples/code/snippets/selectorvalues.pp +22 -0
- data/examples/code/snippets/simpledefaults +5 -0
- data/examples/code/snippets/simpleselector +38 -0
- data/examples/code/svncommit +13 -0
- data/examples/root/bin/sleeper +69 -0
- data/examples/root/etc/configfile +0 -0
- data/examples/root/etc/debian-passwd +29 -0
- data/examples/root/etc/debian-syslog.conf +71 -0
- data/examples/root/etc/init.d/sleeper +65 -0
- data/examples/root/etc/otherfile +0 -0
- data/examples/root/etc/puppet/fileserver.conf +3 -0
- data/examples/root/etc/puppet/puppetmasterd.conf +10 -0
- data/ext/module:puppet +195 -0
- data/install.rb +270 -0
- data/lib/puppet.rb +249 -0
- data/lib/puppet/base64.rb +19 -0
- data/lib/puppet/client.rb +519 -0
- data/lib/puppet/config.rb +49 -0
- data/lib/puppet/daemon.rb +208 -0
- data/lib/puppet/element.rb +71 -0
- data/lib/puppet/event.rb +259 -0
- data/lib/puppet/log.rb +321 -0
- data/lib/puppet/metric.rb +250 -0
- data/lib/puppet/parsedfile.rb +38 -0
- data/lib/puppet/parser/ast.rb +1560 -0
- data/lib/puppet/parser/interpreter.rb +150 -0
- data/lib/puppet/parser/lexer.rb +226 -0
- data/lib/puppet/parser/parser.rb +1354 -0
- data/lib/puppet/parser/scope.rb +755 -0
- data/lib/puppet/server.rb +170 -0
- data/lib/puppet/server/authstore.rb +227 -0
- data/lib/puppet/server/ca.rb +140 -0
- data/lib/puppet/server/filebucket.rb +147 -0
- data/lib/puppet/server/fileserver.rb +477 -0
- data/lib/puppet/server/logger.rb +43 -0
- data/lib/puppet/server/master.rb +103 -0
- data/lib/puppet/server/servlet.rb +247 -0
- data/lib/puppet/sslcertificates.rb +737 -0
- data/lib/puppet/statechange.rb +150 -0
- data/lib/puppet/storage.rb +95 -0
- data/lib/puppet/transaction.rb +179 -0
- data/lib/puppet/transportable.rb +151 -0
- data/lib/puppet/type.rb +1354 -0
- data/lib/puppet/type/component.rb +141 -0
- data/lib/puppet/type/cron.rb +543 -0
- data/lib/puppet/type/exec.rb +316 -0
- data/lib/puppet/type/group.rb +152 -0
- data/lib/puppet/type/nameservice.rb +3 -0
- data/lib/puppet/type/nameservice/netinfo.rb +173 -0
- data/lib/puppet/type/nameservice/objectadd.rb +146 -0
- data/lib/puppet/type/nameservice/posix.rb +200 -0
- data/lib/puppet/type/package.rb +420 -0
- data/lib/puppet/type/package/apt.rb +70 -0
- data/lib/puppet/type/package/dpkg.rb +108 -0
- data/lib/puppet/type/package/rpm.rb +81 -0
- data/lib/puppet/type/package/sun.rb +117 -0
- data/lib/puppet/type/package/yum.rb +58 -0
- data/lib/puppet/type/pfile.rb +569 -0
- data/lib/puppet/type/pfile/checksum.rb +219 -0
- data/lib/puppet/type/pfile/create.rb +108 -0
- data/lib/puppet/type/pfile/group.rb +129 -0
- data/lib/puppet/type/pfile/mode.rb +131 -0
- data/lib/puppet/type/pfile/source.rb +264 -0
- data/lib/puppet/type/pfile/type.rb +31 -0
- data/lib/puppet/type/pfile/uid.rb +166 -0
- data/lib/puppet/type/pfilebucket.rb +80 -0
- data/lib/puppet/type/pprocess.rb +97 -0
- data/lib/puppet/type/service.rb +347 -0
- data/lib/puppet/type/service/base.rb +17 -0
- data/lib/puppet/type/service/debian.rb +50 -0
- data/lib/puppet/type/service/init.rb +145 -0
- data/lib/puppet/type/service/smf.rb +29 -0
- data/lib/puppet/type/state.rb +182 -0
- data/lib/puppet/type/symlink.rb +183 -0
- data/lib/puppet/type/tidy.rb +183 -0
- data/lib/puppet/type/typegen.rb +149 -0
- data/lib/puppet/type/typegen/filerecord.rb +243 -0
- data/lib/puppet/type/typegen/filetype.rb +316 -0
- data/lib/puppet/type/user.rb +290 -0
- data/lib/puppet/util.rb +138 -0
- data/test/certmgr/certmgr.rb +265 -0
- data/test/client/client.rb +203 -0
- data/test/executables/puppetbin.rb +53 -0
- data/test/executables/puppetca.rb +79 -0
- data/test/executables/puppetd.rb +71 -0
- data/test/executables/puppetmasterd.rb +153 -0
- data/test/executables/puppetmodule.rb +60 -0
- data/test/language/ast.rb +412 -0
- data/test/language/interpreter.rb +71 -0
- data/test/language/scope.rb +412 -0
- data/test/language/snippets.rb +445 -0
- data/test/other/events.rb +111 -0
- data/test/other/log.rb +195 -0
- data/test/other/metrics.rb +92 -0
- data/test/other/overrides.rb +115 -0
- data/test/other/parsedfile.rb +31 -0
- data/test/other/relationships.rb +113 -0
- data/test/other/state.rb +106 -0
- data/test/other/storage.rb +39 -0
- data/test/other/transactions.rb +235 -0
- data/test/parser/lexer.rb +120 -0
- data/test/parser/parser.rb +180 -0
- data/test/puppet/conffiles.rb +104 -0
- data/test/puppet/defaults.rb +100 -0
- data/test/puppet/error.rb +23 -0
- data/test/puppet/utiltest.rb +120 -0
- data/test/puppettest.rb +774 -0
- data/test/server/authstore.rb +209 -0
- data/test/server/bucket.rb +227 -0
- data/test/server/ca.rb +201 -0
- data/test/server/fileserver.rb +710 -0
- data/test/server/logger.rb +175 -0
- data/test/server/master.rb +150 -0
- data/test/server/server.rb +130 -0
- data/test/tagging/tagging.rb +80 -0
- data/test/test +51 -0
- data/test/types/basic.rb +119 -0
- data/test/types/component.rb +272 -0
- data/test/types/cron.rb +261 -0
- data/test/types/exec.rb +273 -0
- data/test/types/file.rb +616 -0
- data/test/types/filebucket.rb +167 -0
- data/test/types/fileignoresource.rb +287 -0
- data/test/types/filesources.rb +587 -0
- data/test/types/filetype.rb +162 -0
- data/test/types/group.rb +271 -0
- data/test/types/package.rb +205 -0
- data/test/types/query.rb +101 -0
- data/test/types/service.rb +100 -0
- data/test/types/symlink.rb +93 -0
- data/test/types/tidy.rb +124 -0
- data/test/types/type.rb +135 -0
- data/test/types/user.rb +371 -0
- metadata +243 -0
@@ -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":}
|
data/examples/code/execs
ADDED
@@ -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
|
+
}
|
data/examples/code/head
ADDED
@@ -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
|
data/examples/code/nodes
ADDED
@@ -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
|
+
}
|