puppet 0.22.4 → 0.23.0
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 +156 -0
- data/README +2 -2
- data/Rakefile +6 -6
- data/bin/filebucket +212 -0
- data/bin/puppet +2 -0
- data/bin/puppetca +2 -4
- data/bin/puppetd +16 -15
- data/bin/puppetdoc +46 -496
- data/bin/puppetmasterd +3 -5
- data/bin/puppetrun +8 -3
- data/bin/ralsh +271 -0
- data/conf/redhat/client.init +1 -1
- data/conf/redhat/puppet.spec +13 -2
- data/conf/solaris/pkginfo +1 -1
- data/ext/puppet-test +374 -0
- data/install.rb +40 -31
- data/lib/puppet.rb +39 -4
- data/lib/puppet/config_stores/rest.rb +60 -0
- data/lib/puppet/configuration.rb +312 -17
- data/lib/puppet/external/event-loop/event-loop.rb +4 -0
- data/lib/puppet/external/gratr/rdot.rb +1 -1
- data/lib/puppet/fact_stores/yaml.rb +42 -0
- data/lib/puppet/feature/base.rb +4 -1
- data/lib/puppet/metatype/attributes.rb +20 -43
- data/lib/puppet/metatype/container.rb +1 -36
- data/lib/puppet/metatype/evaluation.rb +48 -19
- data/lib/puppet/metatype/instances.rb +35 -1
- data/lib/puppet/metatype/metaparams.rb +23 -19
- data/lib/puppet/metatype/providers.rb +25 -38
- data/lib/puppet/network/client/ca.rb +8 -5
- data/lib/puppet/network/client/master.rb +59 -17
- data/lib/puppet/network/handler.rb +18 -1
- data/lib/puppet/network/handler/ca.rb +9 -3
- data/lib/puppet/network/handler/facts.rb +70 -0
- data/lib/puppet/network/handler/filebucket.rb +4 -1
- data/lib/puppet/network/handler/fileserver.rb +65 -21
- data/lib/puppet/network/handler/master.rb +6 -3
- data/lib/puppet/network/handler/report.rb +12 -26
- data/lib/puppet/network/handler/resource.rb +14 -2
- data/lib/puppet/network/handler/runner.rb +5 -1
- data/lib/puppet/network/handler/status.rb +5 -1
- data/lib/puppet/network/server/mongrel.rb +4 -4
- data/lib/puppet/network/server/webrick.rb +14 -3
- data/lib/puppet/parameter.rb +30 -25
- data/lib/puppet/parser/ast.rb +1 -6
- data/lib/puppet/parser/ast/component.rb +23 -20
- data/lib/puppet/parser/ast/hostclass.rb +7 -11
- data/lib/puppet/parser/ast/leaf.rb +4 -1
- data/lib/puppet/parser/ast/node.rb +6 -8
- data/lib/puppet/parser/functions.rb +7 -4
- data/lib/puppet/parser/interpreter.rb +155 -205
- data/lib/puppet/parser/lexer.rb +35 -2
- data/lib/puppet/parser/parser.rb +705 -612
- data/lib/puppet/parser/resource.rb +91 -48
- data/lib/puppet/parser/resource/param.rb +52 -29
- data/lib/puppet/parser/scope.rb +28 -23
- data/lib/puppet/pgraph.rb +26 -21
- data/lib/puppet/propertychange.rb +12 -12
- data/lib/puppet/provider.rb +102 -31
- data/lib/puppet/provider/cron/crontab.rb +7 -8
- data/lib/puppet/provider/group/groupadd.rb +4 -4
- data/lib/puppet/provider/group/pw.rb +3 -3
- data/lib/puppet/provider/mount.rb +8 -8
- data/lib/puppet/provider/mount/netinfo.rb +5 -5
- data/lib/puppet/provider/mount/parsed.rb +2 -2
- data/lib/puppet/provider/nameservice.rb +19 -31
- data/lib/puppet/provider/nameservice/netinfo.rb +14 -14
- data/lib/puppet/provider/nameservice/objectadd.rb +4 -4
- data/lib/puppet/provider/nameservice/pw.rb +4 -4
- data/lib/puppet/provider/package.rb +31 -0
- data/lib/puppet/provider/package/appdmg.rb +118 -0
- data/lib/puppet/provider/package/apple.rb +18 -16
- data/lib/puppet/provider/package/apt.rb +13 -15
- data/lib/puppet/provider/package/aptitude.rb +5 -3
- data/lib/puppet/provider/package/aptrpm.rb +9 -11
- data/lib/puppet/provider/package/blastwave.rb +9 -9
- data/lib/puppet/provider/package/darwinport.rb +12 -11
- data/lib/puppet/provider/package/dpkg.rb +20 -12
- data/lib/puppet/provider/package/fink.rb +87 -0
- data/lib/puppet/provider/package/freebsd.rb +10 -11
- data/lib/puppet/provider/package/gem.rb +15 -15
- data/lib/puppet/provider/package/openbsd.rb +12 -17
- data/lib/puppet/provider/package/pkgdmg.rb +90 -16
- data/lib/puppet/provider/package/portage.rb +20 -14
- data/lib/puppet/provider/package/ports.rb +15 -13
- data/lib/puppet/provider/package/rpm.rb +20 -23
- data/lib/puppet/provider/package/rug.rb +6 -8
- data/lib/puppet/provider/package/sun.rb +20 -18
- data/lib/puppet/provider/package/sunfreeware.rb +2 -2
- data/lib/puppet/provider/package/up2date.rb +6 -10
- data/lib/puppet/provider/package/urpmi.rb +51 -0
- data/lib/puppet/provider/package/yum.rb +15 -13
- data/lib/puppet/provider/parsedfile.rb +53 -63
- data/lib/puppet/provider/service/base.rb +13 -15
- data/lib/puppet/provider/service/debian.rb +4 -4
- data/lib/puppet/provider/service/gentoo.rb +4 -4
- data/lib/puppet/provider/service/init.rb +22 -15
- data/lib/puppet/provider/service/redhat.rb +6 -6
- data/lib/puppet/provider/service/smf.rb +6 -6
- data/lib/puppet/provider/user/netinfo.rb +5 -5
- data/lib/puppet/provider/user/pw.rb +10 -5
- data/lib/puppet/provider/user/useradd.rb +9 -14
- data/lib/puppet/provider/zone/solaris.rb +80 -45
- data/lib/puppet/rails.rb +3 -34
- data/lib/puppet/rails/database/schema.rb +45 -24
- data/lib/puppet/rails/fact_value.rb +1 -0
- data/lib/puppet/rails/host.rb +69 -40
- data/lib/puppet/rails/param_name.rb +3 -8
- data/lib/puppet/rails/param_value.rb +2 -1
- data/lib/puppet/rails/puppet_class.rb +0 -2
- data/lib/puppet/rails/puppet_tag.rb +5 -0
- data/lib/puppet/rails/resource.rb +41 -17
- data/lib/puppet/rails/resource_tag.rb +4 -0
- data/lib/puppet/reference/configuration.rb +149 -0
- data/lib/puppet/reference/function.rb +13 -0
- data/lib/puppet/reference/network.rb +37 -0
- data/lib/puppet/reference/providers.rb +118 -0
- data/lib/puppet/reference/report.rb +21 -0
- data/lib/puppet/reference/type.rb +152 -0
- data/lib/puppet/reports/rrdgraph.rb +21 -7
- data/lib/puppet/reports/tagmail.rb +4 -1
- data/lib/puppet/sslcertificates.rb +1 -49
- data/lib/puppet/sslcertificates/ca.rb +2 -79
- data/lib/puppet/sslcertificates/inventory.rb +0 -10
- data/lib/puppet/transaction.rb +24 -41
- data/lib/puppet/transaction/report.rb +27 -1
- data/lib/puppet/type.rb +7 -43
- data/lib/puppet/type/component.rb +198 -124
- data/lib/puppet/type/cron.rb +51 -42
- data/lib/puppet/type/exec.rb +20 -19
- data/lib/puppet/type/group.rb +6 -55
- data/lib/puppet/type/host.rb +16 -37
- data/lib/puppet/type/mount.rb +30 -17
- data/lib/puppet/type/notify.rb +7 -8
- data/lib/puppet/type/package.rb +44 -80
- data/lib/puppet/type/pfile.rb +50 -41
- data/lib/puppet/type/pfile/checksum.rb +82 -95
- data/lib/puppet/type/pfile/content.rb +21 -25
- data/lib/puppet/type/pfile/ensure.rb +32 -30
- data/lib/puppet/type/pfile/group.rb +21 -26
- data/lib/puppet/type/pfile/mode.rb +25 -32
- data/lib/puppet/type/pfile/owner.rb +23 -27
- data/lib/puppet/type/pfile/source.rb +42 -33
- data/lib/puppet/type/pfile/target.rb +20 -18
- data/lib/puppet/type/pfile/type.rb +6 -7
- data/lib/puppet/type/pfilebucket.rb +3 -3
- data/lib/puppet/type/port.rb +5 -7
- data/lib/puppet/type/property.rb +58 -61
- data/lib/puppet/type/resources.rb +12 -8
- data/lib/puppet/type/schedule.rb +8 -8
- data/lib/puppet/type/service.rb +26 -33
- data/lib/puppet/type/sshkey.rb +6 -7
- data/lib/puppet/type/tidy.rb +41 -35
- data/lib/puppet/type/user.rb +34 -67
- data/lib/puppet/type/yumrepo.rb +27 -12
- data/lib/puppet/type/zone.rb +71 -110
- data/lib/puppet/util.rb +46 -61
- data/lib/puppet/util/autoload.rb +59 -47
- data/lib/puppet/util/config.rb +160 -18
- data/lib/puppet/util/config_store.rb +61 -0
- data/lib/puppet/util/fact_store.rb +60 -0
- data/lib/puppet/util/instance_loader.rb +74 -0
- data/lib/puppet/util/loadedfile.rb +5 -8
- data/lib/puppet/util/metric.rb +17 -25
- data/lib/puppet/util/posix.rb +39 -7
- data/lib/puppet/util/provider_features.rb +9 -1
- data/lib/puppet/util/rails/collection_merger.rb +16 -1
- data/lib/puppet/util/reference.rb +189 -0
- data/lib/puppet/util/storage.rb +2 -2
- data/lib/puppet/util/subclass_loader.rb +9 -2
- data/test/language/ast.rb +4 -148
- data/test/language/ast/component.rb +10 -1
- data/test/language/collector.rb +1 -191
- data/test/language/interpreter.rb +284 -327
- data/test/language/lexer.rb +13 -1
- data/test/language/node.rb +1 -1
- data/test/language/parser.rb +17 -4
- data/test/language/resource.rb +67 -101
- data/test/language/scope.rb +18 -3
- data/test/language/snippets.rb +114 -151
- data/test/lib/puppettest.rb +13 -0
- data/test/lib/puppettest/exetest.rb +7 -0
- data/test/lib/puppettest/fakes.rb +39 -28
- data/test/lib/puppettest/railstesting.rb +1 -1
- data/test/lib/puppettest/support/assertions.rb +2 -2
- data/test/lib/puppettest/support/collection.rb +30 -0
- data/test/network/client/ca.rb +27 -1
- data/test/network/client/client.rb +3 -3
- data/test/network/client/master.rb +102 -1
- data/test/network/handler/ca.rb +35 -1
- data/test/network/handler/facts.rb +112 -0
- data/test/network/handler/fileserver.rb +25 -1
- data/test/network/handler/handler.rb +2 -2
- data/test/network/handler/master.rb +2 -49
- data/test/network/handler/resource.rb +5 -6
- data/test/network/server/mongrel_test.rb +65 -0
- data/test/network/server/webrick.rb +2 -2
- data/test/network/xmlrpc/client.rb +2 -1
- data/test/network/xmlrpc/processor.rb +2 -1
- data/test/other/pgraph.rb +6 -5
- data/test/other/propertychange.rb +11 -12
- data/test/other/report.rb +44 -27
- data/test/other/transactions.rb +17 -16
- data/test/puppet/tc_suidmanager.rb +2 -2
- data/test/rails/ast.rb +74 -0
- data/test/rails/collection.rb +214 -0
- data/test/rails/host.rb +49 -24
- data/test/rails/interpreter.rb +91 -0
- data/test/rails/railsparameter.rb +22 -11
- data/test/rails/railsresource.rb +140 -7
- data/test/ral/manager/attributes.rb +37 -13
- data/test/ral/manager/instances.rb +82 -0
- data/test/ral/manager/provider.rb +60 -22
- data/test/ral/manager/type.rb +9 -6
- data/test/ral/providers/cron/crontab.rb +59 -7
- data/test/ral/providers/group.rb +7 -7
- data/test/ral/providers/host/netinfo.rb +5 -6
- data/test/ral/providers/host/parsed.rb +4 -4
- data/test/ral/providers/mount/parsed.rb +11 -6
- data/test/ral/providers/nameservice.rb +2 -2
- data/test/ral/providers/package.rb +39 -14
- data/test/ral/providers/package/apt.rb +72 -3
- data/test/ral/providers/package/aptitude.rb +15 -12
- data/test/ral/providers/package/aptrpm.rb +3 -3
- data/test/ral/providers/package/dpkg.rb +2 -2
- data/test/ral/providers/parsedfile.rb +114 -88
- data/test/ral/providers/{parsedport.rb → port/parsed.rb} +1 -1
- data/test/ral/providers/provider.rb +93 -13
- data/test/ral/providers/service.rb +52 -26
- data/test/ral/providers/sshkey/parsed.rb +3 -3
- data/test/ral/providers/user.rb +19 -20
- data/test/ral/providers/user/useradd.rb +1 -5
- data/test/ral/types/cron.rb +49 -36
- data/test/ral/types/file.rb +38 -35
- data/test/ral/types/file/target.rb +4 -4
- data/test/ral/types/filesources.rb +24 -22
- data/test/ral/types/group.rb +4 -2
- data/test/ral/types/host.rb +17 -10
- data/test/ral/types/mount.rb +40 -23
- data/test/ral/types/package.rb +62 -5
- data/test/ral/types/parameter.rb +2 -2
- data/test/ral/types/property.rb +27 -20
- data/test/ral/types/resources.rb +4 -16
- data/test/ral/types/schedule.rb +2 -2
- data/test/ral/types/service.rb +2 -3
- data/test/ral/types/sshkey.rb +3 -3
- data/test/ral/types/tidy.rb +6 -15
- data/test/ral/types/user.rb +17 -17
- data/test/ral/types/yumrepo.rb +2 -2
- data/test/ral/types/zone.rb +71 -87
- data/test/util/autoload.rb +6 -21
- data/test/util/config.rb +201 -101
- data/test/util/fact_store.rb +67 -0
- data/test/util/features.rb +9 -6
- data/test/util/instance_loader.rb +53 -0
- data/test/util/loadedfile.rb +17 -1
- data/test/util/metrics.rb +54 -57
- data/test/util/posixtest.rb +8 -11
- data/test/util/utiltest.rb +31 -2
- metadata +520 -492
- data/TODO +0 -4
- data/lib/puppet/network/client/logger.rb +0 -6
- data/lib/puppet/network/handler/logger.rb +0 -52
- data/lib/puppet/rails/database/001_add_indexes.rb +0 -38
- data/lib/puppet/type/parsedtype.rb +0 -219
- data/test/network/handler/logger.rb +0 -183
@@ -0,0 +1,21 @@
|
|
1
|
+
report = Puppet::Util::Reference.newreference :report, :doc => "All available transaction reports" do
|
2
|
+
Puppet::Network::Handler.report.reportdocs
|
3
|
+
end
|
4
|
+
|
5
|
+
report.header = "
|
6
|
+
Puppet clients can report back to the server after each transaction. This
|
7
|
+
transaction report is sent as a YAML dump of the
|
8
|
+
``Puppet::Transaction::Report`` class and includes every log message that was
|
9
|
+
generated during the transaction along with as many metrics as Puppet knows how
|
10
|
+
to collect. See `ReportsAndReporting Reports and Reporting`:trac:
|
11
|
+
for more information on how to use reports.
|
12
|
+
|
13
|
+
Currently, clients default to not sending in reports; you can enable reporting
|
14
|
+
by setting the ``report`` parameter to true.
|
15
|
+
|
16
|
+
To use a report, set the ``reports`` parameter on the server; multiple
|
17
|
+
reports must be comma-separated. You can also specify ``none`` to disable
|
18
|
+
reports entirely.
|
19
|
+
|
20
|
+
Puppet provides multiple report handlers that will process client reports:
|
21
|
+
"
|
@@ -0,0 +1,152 @@
|
|
1
|
+
type = Puppet::Util::Reference.newreference :type, :doc => "All Puppet resource types and all their details" do
|
2
|
+
types = {}
|
3
|
+
Puppet::Type.loadall
|
4
|
+
|
5
|
+
Puppet::Type.eachtype { |type|
|
6
|
+
next if type.name == :puppet
|
7
|
+
next if type.name == :component
|
8
|
+
types[type.name] = type
|
9
|
+
}
|
10
|
+
|
11
|
+
str = %{
|
12
|
+
Metaparameters
|
13
|
+
--------------
|
14
|
+
Metaparameters are parameters that work with any element; they are part of the
|
15
|
+
Puppet framework itself rather than being part of the implementation of any
|
16
|
+
given instance. Thus, any defined metaparameter can be used with any instance
|
17
|
+
in your manifest, including defined components.
|
18
|
+
|
19
|
+
Available Metaparameters
|
20
|
+
++++++++++++++++++++++++
|
21
|
+
}
|
22
|
+
begin
|
23
|
+
params = []
|
24
|
+
Puppet::Type.eachmetaparam { |param|
|
25
|
+
params << param
|
26
|
+
}
|
27
|
+
|
28
|
+
params.sort { |a,b|
|
29
|
+
a.to_s <=> b.to_s
|
30
|
+
}.each { |param|
|
31
|
+
str += paramwrap(param.to_s, scrub(Puppet::Type.metaparamdoc(param)), :level => 4)
|
32
|
+
#puts "<dt>" + param.to_s + "</dt>"
|
33
|
+
#puts tab(1) + Puppet::Type.metaparamdoc(param).scrub.indent($tab)gsub(/\n\s*/,' ')
|
34
|
+
#puts "<dd>"
|
35
|
+
#puts indent(scrub(Puppet::Type.metaparamdoc(param)), $tab)
|
36
|
+
#puts scrub(Puppet::Type.metaparamdoc(param))
|
37
|
+
#puts "</dd>"
|
38
|
+
|
39
|
+
#puts ""
|
40
|
+
}
|
41
|
+
rescue => detail
|
42
|
+
puts detail.backtrace
|
43
|
+
puts "incorrect metaparams: %s" % detail
|
44
|
+
exit(1)
|
45
|
+
end
|
46
|
+
|
47
|
+
str += %{
|
48
|
+
|
49
|
+
Resource Types
|
50
|
+
--------------
|
51
|
+
|
52
|
+
- The *namevar* is the parameter used to uniquely identify a type instance.
|
53
|
+
This is the parameter that gets assigned when a string is provided before
|
54
|
+
the colon in a type declaration. In general, only developers will need to
|
55
|
+
worry about which parameter is the ``namevar``.
|
56
|
+
|
57
|
+
In the following code::
|
58
|
+
|
59
|
+
file { "/etc/passwd":
|
60
|
+
owner => root,
|
61
|
+
group => root,
|
62
|
+
mode => 644
|
63
|
+
}
|
64
|
+
|
65
|
+
``/etc/passwd`` is considered the title of the file object (used for things like
|
66
|
+
dependency handling), and because ``path`` is the namevar for ``file``, that
|
67
|
+
string is assigned to the ``path`` parameter.
|
68
|
+
|
69
|
+
- *Features* are abilities that some providers might not support. You can use the list
|
70
|
+
of supported features to determine how a given provider can be used.
|
71
|
+
|
72
|
+
- *Parameters* determine the specific configuration of the instance. They either
|
73
|
+
directly modify the system (internally, these are called properties) or they affect
|
74
|
+
how the instance behaves (e.g., adding a search path for ``exec`` instances
|
75
|
+
or determining recursion on ``file`` instances).
|
76
|
+
|
77
|
+
- *Providers* provide low-level functionality for a given resource type. This is
|
78
|
+
usually in the form of calling out to external commands.
|
79
|
+
|
80
|
+
When required binaries are specified for providers, fully qualifed paths
|
81
|
+
indicate that the binary must exist at that specific path and unqualified
|
82
|
+
binaries indicate that Puppet will search for the binary using the shell
|
83
|
+
path.
|
84
|
+
|
85
|
+
Resource types define features they can use, and providers can be tested to see
|
86
|
+
which features they provide.
|
87
|
+
|
88
|
+
}
|
89
|
+
|
90
|
+
types.sort { |a,b|
|
91
|
+
a.to_s <=> b.to_s
|
92
|
+
}.each { |name,type|
|
93
|
+
|
94
|
+
str += "
|
95
|
+
|
96
|
+
----------------
|
97
|
+
|
98
|
+
"
|
99
|
+
|
100
|
+
str += h(name, 3)
|
101
|
+
str += scrub(type.doc) + "\n\n"
|
102
|
+
|
103
|
+
# Handle the feature docs.
|
104
|
+
if featuredocs = type.featuredocs
|
105
|
+
str += h("Features", 4)
|
106
|
+
str += featuredocs
|
107
|
+
end
|
108
|
+
|
109
|
+
docs = {}
|
110
|
+
type.validproperties.sort { |a,b|
|
111
|
+
a.to_s <=> b.to_s
|
112
|
+
}.reject { |sname|
|
113
|
+
property = type.propertybyname(sname)
|
114
|
+
property.nodoc
|
115
|
+
}.each { |sname|
|
116
|
+
property = type.propertybyname(sname)
|
117
|
+
|
118
|
+
unless property
|
119
|
+
raise "Could not retrieve property %s on type %s" % [sname, type.name]
|
120
|
+
end
|
121
|
+
|
122
|
+
doc = nil
|
123
|
+
unless doc = property.doc
|
124
|
+
$stderr.puts "No docs for %s[%s]" % [type, sname]
|
125
|
+
next
|
126
|
+
end
|
127
|
+
doc = doc.dup
|
128
|
+
tmp = doc
|
129
|
+
tmp = scrub(tmp)
|
130
|
+
|
131
|
+
docs[sname] = tmp
|
132
|
+
}
|
133
|
+
|
134
|
+
str += h("Parameters", 4) + "\n"
|
135
|
+
type.parameters.sort { |a,b|
|
136
|
+
a.to_s <=> b.to_s
|
137
|
+
}.each { |name,param|
|
138
|
+
#docs[name] = indent(scrub(type.paramdoc(name)), $tab)
|
139
|
+
docs[name] = scrub(type.paramdoc(name))
|
140
|
+
}
|
141
|
+
|
142
|
+
docs.sort { |a, b|
|
143
|
+
a[0].to_s <=> b[0].to_s
|
144
|
+
}.each { |name, doc|
|
145
|
+
namevar = type.namevar == name and name != :name
|
146
|
+
str += paramwrap(name, doc, :namevar => namevar)
|
147
|
+
}
|
148
|
+
str += "\n"
|
149
|
+
}
|
150
|
+
|
151
|
+
str
|
152
|
+
end
|
@@ -2,10 +2,11 @@ require 'puppet'
|
|
2
2
|
|
3
3
|
Puppet::Network::Handler.report.newreport(:rrdgraph) do
|
4
4
|
desc "Graph all available data about hosts using the RRD library. You
|
5
|
-
must have the
|
6
|
-
you can get from `
|
5
|
+
must have the Ruby RRDtool library installed to use this report, which
|
6
|
+
you can get from `the RubyRRDTool RubyForge page`_. This package requires
|
7
|
+
the binary rrdtool2 package to be installed.
|
7
8
|
|
8
|
-
..
|
9
|
+
.. _the RubyRRDTool RubyForge page: http://rubyforge.org/projects/rubyrrdtool/
|
9
10
|
|
10
11
|
This report will create, manage, and graph RRD database files for each
|
11
12
|
of the metrics generated during transactions, and it will create a
|
@@ -99,10 +100,10 @@ Puppet::Network::Handler.report.newreport(:rrdgraph) do
|
|
99
100
|
def process(time = nil)
|
100
101
|
time ||= Time.now.to_i
|
101
102
|
|
102
|
-
unless File.directory?(hostdir)
|
103
|
-
# Some hackishness to create the dir
|
103
|
+
unless File.directory?(hostdir) and FileTest.writable?(hostdir)
|
104
|
+
# Some hackishness to create the dir with all of the right modes and ownership
|
104
105
|
config = Puppet::Util::Config.new
|
105
|
-
config.setdefaults(:reports, :hostdir =>
|
106
|
+
config.setdefaults(:reports, :hostdir => {:default => hostdir, :owner => Puppet[:user], :mode => 0755, :group => Puppet[:group], :desc => "eh"})
|
106
107
|
|
107
108
|
# This creates the dir.
|
108
109
|
config.use(:reports)
|
@@ -110,6 +111,11 @@ Puppet::Network::Handler.report.newreport(:rrdgraph) do
|
|
110
111
|
|
111
112
|
self.metrics.each do |name, metric|
|
112
113
|
metric.basedir = hostdir
|
114
|
+
|
115
|
+
if name == "time"
|
116
|
+
timeclean(metric)
|
117
|
+
end
|
118
|
+
|
113
119
|
metric.store(time)
|
114
120
|
|
115
121
|
metric.graph
|
@@ -119,6 +125,14 @@ Puppet::Network::Handler.report.newreport(:rrdgraph) do
|
|
119
125
|
mkhtml()
|
120
126
|
end
|
121
127
|
end
|
128
|
+
|
129
|
+
# Unfortunately, RRD does not deal well with changing lists of values,
|
130
|
+
# so we have to pick a list of values and stick with it. In this case,
|
131
|
+
# that means we record the total time, the config time, and that's about
|
132
|
+
# it. We should probably send each type's time as a separate metric.
|
133
|
+
def timeclean(metric)
|
134
|
+
metric.values = metric.values.find_all { |name, label, value| [:total, :config_retrieval].include?(name) }
|
135
|
+
end
|
122
136
|
end
|
123
137
|
|
124
|
-
# $Id: rrdgraph.rb
|
138
|
+
# $Id: rrdgraph.rb 2603 2007-06-18 16:26:22Z luke $
|
@@ -30,6 +30,9 @@ Puppet::Network::Handler.report.newreport(:tagmail) do
|
|
30
30
|
webservers that are not also from mailservers to ``httpadmins@domain.com``.
|
31
31
|
"
|
32
32
|
|
33
|
+
|
34
|
+
Puppet.config.use(:tagmail)
|
35
|
+
|
33
36
|
# Find all matching messages.
|
34
37
|
def match(taglists)
|
35
38
|
reports = []
|
@@ -164,4 +167,4 @@ Puppet::Network::Handler.report.newreport(:tagmail) do
|
|
164
167
|
end
|
165
168
|
end
|
166
169
|
|
167
|
-
# $Id: tagmail.rb
|
170
|
+
# $Id: tagmail.rb 2463 2007-05-04 23:09:34Z luke $
|
@@ -9,54 +9,6 @@ rescue LoadError
|
|
9
9
|
end
|
10
10
|
|
11
11
|
module Puppet::SSLCertificates
|
12
|
-
hostname = Facter["hostname"].value
|
13
|
-
domain = Facter["domain"].value
|
14
|
-
if domain and domain != ""
|
15
|
-
fqdn = [hostname, domain].join(".")
|
16
|
-
else
|
17
|
-
fqdn = hostname
|
18
|
-
end
|
19
|
-
|
20
|
-
Puppet.setdefaults("certificates",
|
21
|
-
:certname => [fqdn, "The name to use when handling certificates. Defaults
|
22
|
-
to the fully qualified domain name."],
|
23
|
-
:certdir => ["$ssldir/certs", "The certificate directory."],
|
24
|
-
:publickeydir => ["$ssldir/public_keys", "The public key directory."],
|
25
|
-
:privatekeydir => { :default => "$ssldir/private_keys",
|
26
|
-
:mode => 0750,
|
27
|
-
:desc => "The private key directory."
|
28
|
-
},
|
29
|
-
:privatedir => { :default => "$ssldir/private",
|
30
|
-
:mode => 0750,
|
31
|
-
:desc => "Where the client stores private certificate information."
|
32
|
-
},
|
33
|
-
:passfile => { :default => "$privatedir/password",
|
34
|
-
:mode => 0640,
|
35
|
-
:desc => "Where puppetd stores the password for its private key.
|
36
|
-
Generally unused."
|
37
|
-
},
|
38
|
-
:hostcsr => { :default => "$ssldir/csr_$certname.pem",
|
39
|
-
:mode => 0644,
|
40
|
-
:desc => "Where individual hosts store and look for their certificates."
|
41
|
-
},
|
42
|
-
:hostcert => { :default => "$certdir/$certname.pem",
|
43
|
-
:mode => 0644,
|
44
|
-
:desc => "Where individual hosts store and look for their certificates."
|
45
|
-
},
|
46
|
-
:hostprivkey => { :default => "$privatekeydir/$certname.pem",
|
47
|
-
:mode => 0600,
|
48
|
-
:desc => "Where individual hosts store and look for their private key."
|
49
|
-
},
|
50
|
-
:hostpubkey => { :default => "$publickeydir/$certname.pem",
|
51
|
-
:mode => 0644,
|
52
|
-
:desc => "Where individual hosts store and look for their public key."
|
53
|
-
},
|
54
|
-
:localcacert => { :default => "$certdir/ca.pem",
|
55
|
-
:mode => 0644,
|
56
|
-
:desc => "Where each client stores the CA certificate."
|
57
|
-
}
|
58
|
-
)
|
59
|
-
|
60
12
|
#def self.mkcert(type, name, ttl, issuercert, issuername, serial, publickey)
|
61
13
|
def self.mkcert(hash)
|
62
14
|
[:type, :name, :ttl, :issuer, :serial, :publickey].each { |param|
|
@@ -190,4 +142,4 @@ module Puppet::SSLCertificates
|
|
190
142
|
require 'puppet/sslcertificates/ca'
|
191
143
|
end
|
192
144
|
|
193
|
-
# $Id: sslcertificates.rb
|
145
|
+
# $Id: sslcertificates.rb 2463 2007-05-04 23:09:34Z luke $
|
@@ -4,83 +4,6 @@ class Puppet::SSLCertificates::CA
|
|
4
4
|
Certificate = Puppet::SSLCertificates::Certificate
|
5
5
|
attr_accessor :keyfile, :file, :config, :dir, :cert, :crl
|
6
6
|
|
7
|
-
Puppet.setdefaults(:ca,
|
8
|
-
:cadir => { :default => "$ssldir/ca",
|
9
|
-
:owner => "$user",
|
10
|
-
:group => "$group",
|
11
|
-
:mode => 0770,
|
12
|
-
:desc => "The root directory for the certificate authority."
|
13
|
-
},
|
14
|
-
:cacert => { :default => "$cadir/ca_crt.pem",
|
15
|
-
:owner => "$user",
|
16
|
-
:group => "$group",
|
17
|
-
:mode => 0660,
|
18
|
-
:desc => "The CA certificate."
|
19
|
-
},
|
20
|
-
:cakey => { :default => "$cadir/ca_key.pem",
|
21
|
-
:owner => "$user",
|
22
|
-
:group => "$group",
|
23
|
-
:mode => 0660,
|
24
|
-
:desc => "The CA private key."
|
25
|
-
},
|
26
|
-
:capub => { :default => "$cadir/ca_pub.pem",
|
27
|
-
:owner => "$user",
|
28
|
-
:group => "$group",
|
29
|
-
:desc => "The CA public key."
|
30
|
-
},
|
31
|
-
:cacrl => { :default => "$cadir/ca_crl.pem",
|
32
|
-
:owner => "$user",
|
33
|
-
:group => "$group",
|
34
|
-
:mode => 0664,
|
35
|
-
:desc => "The certificate revocation list (CRL) for the CA. Set this to 'none' if you do not want to use a CRL."
|
36
|
-
},
|
37
|
-
:caprivatedir => { :default => "$cadir/private",
|
38
|
-
:owner => "$user",
|
39
|
-
:group => "$group",
|
40
|
-
:mode => 0770,
|
41
|
-
:desc => "Where the CA stores private certificate information."
|
42
|
-
},
|
43
|
-
:csrdir => { :default => "$cadir/requests",
|
44
|
-
:owner => "$user",
|
45
|
-
:group => "$group",
|
46
|
-
:desc => "Where the CA stores certificate requests"
|
47
|
-
},
|
48
|
-
:signeddir => { :default => "$cadir/signed",
|
49
|
-
:owner => "$user",
|
50
|
-
:group => "$group",
|
51
|
-
:mode => 0770,
|
52
|
-
:desc => "Where the CA stores signed certificates."
|
53
|
-
},
|
54
|
-
:capass => { :default => "$caprivatedir/ca.pass",
|
55
|
-
:owner => "$user",
|
56
|
-
:group => "$group",
|
57
|
-
:mode => 0660,
|
58
|
-
:desc => "Where the CA stores the password for the private key"
|
59
|
-
},
|
60
|
-
:serial => { :default => "$cadir/serial",
|
61
|
-
:owner => "$user",
|
62
|
-
:group => "$group",
|
63
|
-
:desc => "Where the serial number for certificates is stored."
|
64
|
-
},
|
65
|
-
:autosign => { :default => "$confdir/autosign.conf",
|
66
|
-
:mode => 0644,
|
67
|
-
:desc => "Whether to enable autosign. Valid values are true (which
|
68
|
-
autosigns any key request, and is a very bad idea), false (which
|
69
|
-
never autosigns any key request), and the path to a file, which
|
70
|
-
uses that configuration file to determine which keys to sign."},
|
71
|
-
:ca_days => ["", "How long a certificate should be valid.
|
72
|
-
This parameter is deprecated, use ca_ttl instead"],
|
73
|
-
:ca_ttl => ["5y", "The default TTL for new certificates; valid values
|
74
|
-
must be an integer, optionally followed by one of the units
|
75
|
-
'y' (years of 365 days), 'd' (days), 'h' (hours), or
|
76
|
-
's' (seconds). The unit defaults to seconds. If this parameter
|
77
|
-
is set, ca_days is ignored. Examples are '3600' (one hour)
|
78
|
-
and '1825d', which is the same as '5y' (5 years) "],
|
79
|
-
:ca_md => ["md5", "The type of hash used in certificates."],
|
80
|
-
:req_bits => [2048, "The bit length of the certificates."],
|
81
|
-
:keylength => [1024, "The bit length of keys."]
|
82
|
-
)
|
83
|
-
|
84
7
|
def certfile
|
85
8
|
@config[:cacert]
|
86
9
|
end
|
@@ -128,7 +51,7 @@ class Puppet::SSLCertificates::CA
|
|
128
51
|
end
|
129
52
|
|
130
53
|
def initialize(hash = {})
|
131
|
-
Puppet.config.use(:
|
54
|
+
Puppet.config.use(:main, :ca, :ssl)
|
132
55
|
self.setconfig(hash)
|
133
56
|
|
134
57
|
if Puppet[:capass]
|
@@ -459,4 +382,4 @@ class Puppet::SSLCertificates::CA
|
|
459
382
|
end
|
460
383
|
end
|
461
384
|
|
462
|
-
# $Id: ca.rb
|
385
|
+
# $Id: ca.rb 2463 2007-05-04 23:09:34Z luke $
|
@@ -3,16 +3,6 @@
|
|
3
3
|
module Puppet::SSLCertificates
|
4
4
|
module Inventory
|
5
5
|
|
6
|
-
Puppet.config.setdefaults(:ca,
|
7
|
-
:cert_inventory => {
|
8
|
-
:default => "$cadir/inventory.txt",
|
9
|
-
:mode => 0644,
|
10
|
-
:owner => "$user",
|
11
|
-
:group => "$group",
|
12
|
-
:desc => "A Complete listing of all certificates"
|
13
|
-
}
|
14
|
-
)
|
15
|
-
|
16
6
|
# Add CERT to the inventory of issued certs in '$cadir/inventory.txt'
|
17
7
|
# If no inventory exists yet, build an inventory and list all the
|
18
8
|
# certificates that have been signed so far
|
data/lib/puppet/transaction.rb
CHANGED
@@ -15,21 +15,6 @@ class Transaction
|
|
15
15
|
|
16
16
|
include Puppet::Util
|
17
17
|
|
18
|
-
Puppet.config.setdefaults(:puppet,
|
19
|
-
:graph => [false, "Whether to create dot graph files for the different
|
20
|
-
configuration graphs. These dot files can be interpreted by tools
|
21
|
-
like OmniGraffle or dot (which is part of ImageMagick)."],
|
22
|
-
:graphdir => ["$statedir/graphs", "Where to store dot-outputted graphs."]
|
23
|
-
)
|
24
|
-
Puppet.config.setdefaults(:transaction,
|
25
|
-
:tags => ["", "Tags to use to find resources. If this is set, then
|
26
|
-
only resources tagged with the specified tags will be applied.
|
27
|
-
Values must be comma-separated."],
|
28
|
-
:evaltrace => [false, "Whether each resource should log when it is
|
29
|
-
being evaluated. This allows you to interactively see exactly
|
30
|
-
what is being done."]
|
31
|
-
)
|
32
|
-
|
33
18
|
# Add some additional times for reporting
|
34
19
|
def addtimes(hash)
|
35
20
|
hash.each do |name, num|
|
@@ -122,7 +107,7 @@ class Transaction
|
|
122
107
|
puts detail.backtrace
|
123
108
|
end
|
124
109
|
change.property.err "change from %s to %s failed: %s" %
|
125
|
-
[change.property.is_to_s, change.property.should_to_s, detail]
|
110
|
+
[change.property.is_to_s(change.is), change.property.should_to_s(change.should), detail]
|
126
111
|
@failures[resource] += 1
|
127
112
|
next
|
128
113
|
# FIXME this should support using onerror to determine
|
@@ -144,7 +129,7 @@ class Transaction
|
|
144
129
|
# Find all of the changed resources.
|
145
130
|
def changed?
|
146
131
|
@changes.find_all { |change| change.changed }.collect { |change|
|
147
|
-
change.property.
|
132
|
+
change.property.resource
|
148
133
|
}.uniq
|
149
134
|
end
|
150
135
|
|
@@ -409,16 +394,6 @@ class Transaction
|
|
409
394
|
total
|
410
395
|
end
|
411
396
|
|
412
|
-
# Unfortunately, RRD does not deal well with changing lists of values,
|
413
|
-
# so we have to pick a list of values and stick with it. In this case,
|
414
|
-
# that means we record the total time, the config time, and that's about
|
415
|
-
# it. We should probably send each type's time as a separate metric.
|
416
|
-
@timemetrics.dup.each do |name, value|
|
417
|
-
if Puppet::Type.type(name)
|
418
|
-
@timemetrics.delete(name)
|
419
|
-
end
|
420
|
-
end
|
421
|
-
|
422
397
|
# Add all of the metrics related to resource count and status
|
423
398
|
@report.newmetric(:resources, @resourcemetrics)
|
424
399
|
|
@@ -442,6 +417,8 @@ class Transaction
|
|
442
417
|
|
443
418
|
return unless Puppet[:graph]
|
444
419
|
|
420
|
+
Puppet.config.use(:graphing)
|
421
|
+
|
445
422
|
file = File.join(Puppet[:graphdir], "%s.dot" % name.to_s)
|
446
423
|
File.open(file, "w") { |f|
|
447
424
|
f.puts gr.to_dot("name" => name.to_s.capitalize)
|
@@ -496,16 +473,24 @@ class Transaction
|
|
496
473
|
# Prefetch any providers that support it. We don't support prefetching
|
497
474
|
# types, just providers.
|
498
475
|
def prefetch
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
476
|
+
prefetchers = {}
|
477
|
+
@resources.each do |resource|
|
478
|
+
if provider = resource.provider and provider.class.respond_to?(:prefetch)
|
479
|
+
prefetchers[provider.class] ||= {}
|
480
|
+
prefetchers[provider.class][resource.title] = resource
|
504
481
|
end
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
482
|
+
end
|
483
|
+
|
484
|
+
# Now call prefetch, passing in the resources so that the provider instances can be replaced.
|
485
|
+
prefetchers.each do |provider, resources|
|
486
|
+
Puppet.debug "Prefetching %s resources for %s" % [provider.name, provider.resource_type.name]
|
487
|
+
begin
|
488
|
+
provider.prefetch(resources)
|
489
|
+
rescue => detail
|
490
|
+
if Puppet[:trace]
|
491
|
+
puts detail.backtrace
|
492
|
+
end
|
493
|
+
Puppet.err "Could not prefetch % provider %s: %s" % [resources[0].class.name, provider.name, detail]
|
509
494
|
end
|
510
495
|
end
|
511
496
|
end
|
@@ -520,10 +505,8 @@ class Transaction
|
|
520
505
|
# Create a relationship graph from our resource graph
|
521
506
|
@relgraph = relationship_graph
|
522
507
|
|
508
|
+
# This will throw an error if there are cycles in the graph.
|
523
509
|
@sorted_resources = @relgraph.topsort
|
524
|
-
|
525
|
-
# Now make sure no cycles crept into our graph.
|
526
|
-
@relgraph.check_cycle(@sorted_resources)
|
527
510
|
end
|
528
511
|
|
529
512
|
# Create a graph of all of the relationships in our resource graph.
|
@@ -596,7 +579,7 @@ class Transaction
|
|
596
579
|
# Now check to see if there are any events for this child.
|
597
580
|
# Kind of hackish, since going backwards goes a change at a
|
598
581
|
# time, not a child at a time.
|
599
|
-
trigger(change.property.
|
582
|
+
trigger(change.property.resource)
|
600
583
|
|
601
584
|
# And return the events for collection
|
602
585
|
events
|
@@ -754,4 +737,4 @@ end
|
|
754
737
|
|
755
738
|
require 'puppet/transaction/report'
|
756
739
|
|
757
|
-
# $Id: transaction.rb
|
740
|
+
# $Id: transaction.rb 2621 2007-06-18 21:56:11Z luke $
|