puppet 0.22.4 → 0.23.0
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.
- 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
|
@@ -4,17 +4,12 @@ require 'puppet/rails/param_value'
|
|
|
4
4
|
class Puppet::Rails::ParamName < ActiveRecord::Base
|
|
5
5
|
include Puppet::Util::CollectionMerger
|
|
6
6
|
has_many :param_values, :dependent => :destroy
|
|
7
|
-
# def <<(value)
|
|
8
|
-
# ParamValue.with_scope(:create => {:value => value})
|
|
9
|
-
# end
|
|
10
|
-
## end
|
|
11
|
-
belongs_to :resource
|
|
12
7
|
|
|
13
|
-
def to_resourceparam(source)
|
|
8
|
+
def to_resourceparam(resource, source)
|
|
14
9
|
hash = {}
|
|
15
10
|
hash[:name] = self.name.to_sym
|
|
16
11
|
hash[:source] = source
|
|
17
|
-
hash[:value] =
|
|
12
|
+
hash[:value] = resource.param_values.find(:all, :conditions => [ "param_name_id = ?", self]).collect { |v| v.value }
|
|
18
13
|
if hash[:value].length == 1
|
|
19
14
|
hash[:value] = hash[:value].shift
|
|
20
15
|
end
|
|
@@ -25,4 +20,4 @@ class Puppet::Rails::ParamName < ActiveRecord::Base
|
|
|
25
20
|
end
|
|
26
21
|
end
|
|
27
22
|
|
|
28
|
-
# $Id: param_name.rb
|
|
23
|
+
# $Id: param_name.rb 2565 2007-06-12 00:31:16Z ballman $
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
require 'puppet'
|
|
2
|
-
require 'puppet/rails/external/tagging/init'
|
|
3
2
|
require 'puppet/rails/param_name'
|
|
3
|
+
require 'puppet/rails/puppet_tag'
|
|
4
4
|
require 'puppet/util/rails/collection_merger'
|
|
5
5
|
|
|
6
6
|
class Puppet::Rails::Resource < ActiveRecord::Base
|
|
7
7
|
include Puppet::Util::CollectionMerger
|
|
8
8
|
|
|
9
|
-
has_many :param_values, :
|
|
10
|
-
has_many :param_names, :
|
|
9
|
+
has_many :param_values, :dependent => :destroy
|
|
10
|
+
has_many :param_names, :through => :param_values
|
|
11
|
+
|
|
12
|
+
has_many :resource_tags, :dependent => :destroy
|
|
13
|
+
has_many :puppet_tags, :through => :resource_tags
|
|
14
|
+
|
|
11
15
|
belongs_to :source_file
|
|
12
16
|
belongs_to :host
|
|
13
17
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
#puts "setting tags %s" % tags.inspect
|
|
18
|
-
self.tag_with(tags.join(","))
|
|
18
|
+
def add_resource_tag(tag)
|
|
19
|
+
pt = Puppet::Rails::PuppetTag.find_or_create_by_name(tag, :include => :puppet_tag)
|
|
20
|
+
resource_tags.create(:puppet_tag => pt)
|
|
19
21
|
end
|
|
20
22
|
|
|
21
23
|
def file
|
|
@@ -27,7 +29,25 @@ class Puppet::Rails::Resource < ActiveRecord::Base
|
|
|
27
29
|
end
|
|
28
30
|
|
|
29
31
|
def file=(file)
|
|
30
|
-
self.source_file = Puppet::Rails::SourceFile.
|
|
32
|
+
self.source_file = Puppet::Rails::SourceFile.find_or_create_by_filename(file)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# returns a hash of param_names.name => [param_values]
|
|
36
|
+
def get_params_hash(values = nil)
|
|
37
|
+
values ||= param_values.find(:all, :include => :param_name)
|
|
38
|
+
values.inject({}) do | hash, value |
|
|
39
|
+
hash[value.param_name.name] ||= []
|
|
40
|
+
hash[value.param_name.name] << value
|
|
41
|
+
hash
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def get_tag_hash(tags = nil)
|
|
46
|
+
tags ||= resource_tags.find(:all, :include => :puppet_tag)
|
|
47
|
+
return tags.inject({}) do |hash, tag|
|
|
48
|
+
hash[tag.puppet_tag.name] = tag.puppet_tag.name
|
|
49
|
+
hash
|
|
50
|
+
end
|
|
31
51
|
end
|
|
32
52
|
|
|
33
53
|
def [](param)
|
|
@@ -40,7 +60,7 @@ class Puppet::Rails::Resource < ActiveRecord::Base
|
|
|
40
60
|
|
|
41
61
|
def parameter(param)
|
|
42
62
|
if pn = param_names.find_by_name(param)
|
|
43
|
-
if pv =
|
|
63
|
+
if pv = param_values.find(:first, :conditions => [ 'param_name_id = ?', pn] )
|
|
44
64
|
return pv.value
|
|
45
65
|
else
|
|
46
66
|
return nil
|
|
@@ -49,12 +69,15 @@ class Puppet::Rails::Resource < ActiveRecord::Base
|
|
|
49
69
|
end
|
|
50
70
|
|
|
51
71
|
def parameters
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
72
|
+
result = get_params_hash
|
|
73
|
+
result.each do |param, value|
|
|
74
|
+
if value.is_a?(Array)
|
|
75
|
+
result[param] = value.collect { |v| v.value }
|
|
76
|
+
else
|
|
77
|
+
result[param] = value.value
|
|
78
|
+
end
|
|
56
79
|
end
|
|
57
|
-
|
|
80
|
+
result
|
|
58
81
|
end
|
|
59
82
|
|
|
60
83
|
def ref
|
|
@@ -81,8 +104,9 @@ class Puppet::Rails::Resource < ActiveRecord::Base
|
|
|
81
104
|
hash[:scope] = scope
|
|
82
105
|
hash[:source] = scope.source
|
|
83
106
|
obj = Puppet::Parser::Resource.new(hash)
|
|
107
|
+
|
|
84
108
|
self.param_names.each do |pname|
|
|
85
|
-
obj.set(pname.to_resourceparam(scope.source))
|
|
109
|
+
obj.set(pname.to_resourceparam(self, scope.source))
|
|
86
110
|
end
|
|
87
111
|
|
|
88
112
|
# Store the ID, so we can check if we're re-collecting the same resource.
|
|
@@ -92,4 +116,4 @@ class Puppet::Rails::Resource < ActiveRecord::Base
|
|
|
92
116
|
end
|
|
93
117
|
end
|
|
94
118
|
|
|
95
|
-
# $Id: resource.rb
|
|
119
|
+
# $Id: resource.rb 2597 2007-06-17 21:41:50Z luke $
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
config = Puppet::Util::Reference.newreference(:configuration, :depth => 1, :doc => "A reference for all configuration parameters") do
|
|
2
|
+
docs = {}
|
|
3
|
+
Puppet.config.each do |name, object|
|
|
4
|
+
docs[name] = object
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
str = ""
|
|
8
|
+
docs.sort { |a, b|
|
|
9
|
+
a[0].to_s <=> b[0].to_s
|
|
10
|
+
}.each do |name, object|
|
|
11
|
+
# Make each name an anchor
|
|
12
|
+
header = name.to_s
|
|
13
|
+
str += h(header, 3)
|
|
14
|
+
|
|
15
|
+
# Print the doc string itself
|
|
16
|
+
begin
|
|
17
|
+
str += object.desc.gsub(/\n/, " ")
|
|
18
|
+
rescue => detail
|
|
19
|
+
puts detail.backtrace
|
|
20
|
+
puts detail
|
|
21
|
+
end
|
|
22
|
+
str += "\n\n"
|
|
23
|
+
|
|
24
|
+
# Now print the data about the item.
|
|
25
|
+
str += ""
|
|
26
|
+
val = object.default
|
|
27
|
+
if name.to_s == "vardir"
|
|
28
|
+
val = "/var/puppet"
|
|
29
|
+
elsif name.to_s == "confdir"
|
|
30
|
+
val = "/etc/puppet"
|
|
31
|
+
end
|
|
32
|
+
str += "- **Section**: %s\n" % object.section
|
|
33
|
+
unless val == ""
|
|
34
|
+
str += "- **Default**: %s\n" % val
|
|
35
|
+
end
|
|
36
|
+
str += "\n"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
return str
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
config.header = "
|
|
43
|
+
Specifying Configuration Parameters
|
|
44
|
+
-----------------------------------
|
|
45
|
+
|
|
46
|
+
On The Command-Line
|
|
47
|
+
+++++++++++++++++++
|
|
48
|
+
Every Puppet executable (with the exception of ``puppetdoc``) accepts all of
|
|
49
|
+
the arguments below, but not all of the arguments make sense for every executable.
|
|
50
|
+
Each argument has a section listed with it in parentheses; often, that section
|
|
51
|
+
will map to an executable (e.g., ``puppetd``), in which case it probably only
|
|
52
|
+
makes sense for that one executable. If ``puppet`` is listed as the section,
|
|
53
|
+
it is most likely an option that is valid for everyone.
|
|
54
|
+
|
|
55
|
+
This will not always be the case. I have tried to be as thorough as possible
|
|
56
|
+
in the descriptions of the arguments, so it should be obvious whether an
|
|
57
|
+
argument is appropriate or not.
|
|
58
|
+
|
|
59
|
+
These arguments can be supplied to the executables either as command-line
|
|
60
|
+
arugments or in the configuration file for the appropriate executable. For
|
|
61
|
+
instance, the command-line invocation below would set the configuration directory
|
|
62
|
+
to ``/private/puppet``::
|
|
63
|
+
|
|
64
|
+
$ puppetd --confdir=/private/puppet
|
|
65
|
+
|
|
66
|
+
Note that boolean options are turned on and off with a slightly different syntax
|
|
67
|
+
on the command line::
|
|
68
|
+
|
|
69
|
+
$ puppetd --storeconfigs
|
|
70
|
+
|
|
71
|
+
$ puppetd --no-storeconfigs
|
|
72
|
+
|
|
73
|
+
The invocations above will enable and disable, respectively, the storage of
|
|
74
|
+
the client configuration.
|
|
75
|
+
|
|
76
|
+
Configuration Files
|
|
77
|
+
+++++++++++++++++++
|
|
78
|
+
As mentioned above, the configuration parameters can also be stored in a
|
|
79
|
+
configuration file located in the configuration directory (`/etc/puppet`
|
|
80
|
+
by default). All executables look for ``puppet.conf`` in their
|
|
81
|
+
configuration directory (although they used to each look to separate files).
|
|
82
|
+
|
|
83
|
+
All executables will set any parameters set within the ``main`` section,
|
|
84
|
+
while each executable will also look for a section named for the executable
|
|
85
|
+
and load those parameters. For example, ``puppetd`` will look for a
|
|
86
|
+
section named ``puppetd`, and ``puppetmasterd`` looks for a section
|
|
87
|
+
named ``puppetmasterd``. This allows you to use a single configuration file
|
|
88
|
+
to customize the settings for all of your executables.
|
|
89
|
+
|
|
90
|
+
File Format
|
|
91
|
+
'''''''''''
|
|
92
|
+
The file follows INI-style formatting. Here is an example of a very simple
|
|
93
|
+
``puppet.conf`` file::
|
|
94
|
+
|
|
95
|
+
[main]
|
|
96
|
+
confdir = /private/puppet
|
|
97
|
+
storeconfigs = true
|
|
98
|
+
|
|
99
|
+
Note that boolean parameters must be explicitly specified as `true` or
|
|
100
|
+
`false` as seen above.
|
|
101
|
+
|
|
102
|
+
If you need to change file parameters (e.g., reset the mode or owner), do
|
|
103
|
+
so within curly braces on the same line::
|
|
104
|
+
|
|
105
|
+
[main]
|
|
106
|
+
myfile = /tmp/whatever {owner = root, mode = 644}
|
|
107
|
+
|
|
108
|
+
If you're starting out with a fresh configuration, you may wish to let
|
|
109
|
+
the executable generate a template configuration file for you by invoking
|
|
110
|
+
the executable in question with the `--genconfig` command. The executable
|
|
111
|
+
will print a template configuration to standard output, which can be
|
|
112
|
+
redirected to a file like so::
|
|
113
|
+
|
|
114
|
+
$ puppetd --genconfig > /etc/puppet/puppetd.conf
|
|
115
|
+
|
|
116
|
+
Note that this invocation will \"clobber\" (throw away) the contents of any
|
|
117
|
+
pre-existing `puppetd.conf` file, so make a backup of your present config
|
|
118
|
+
if it contains valuable information.
|
|
119
|
+
|
|
120
|
+
Like the `--genconfig` argument, the executables also accept a `--genmanifest`
|
|
121
|
+
argument, which will generate a manifest that can be used to manage all of
|
|
122
|
+
Puppet's directories and files and prints it to standard output. This can
|
|
123
|
+
likewise be redirected to a file::
|
|
124
|
+
|
|
125
|
+
$ puppetd --genmanifest > /etc/puppet/manifests/site.pp
|
|
126
|
+
|
|
127
|
+
Puppet can also create user and group accounts for itself (one `puppet` group
|
|
128
|
+
and one `puppet` user) if it is invoked as `root` with the `--mkusers` argument::
|
|
129
|
+
|
|
130
|
+
$ puppetd --mkusers
|
|
131
|
+
|
|
132
|
+
Signals
|
|
133
|
+
-------
|
|
134
|
+
The ``puppetd`` and ``puppetmasterd`` executables catch some signals for special
|
|
135
|
+
handling. Both daemons catch (``SIGHUP``), which forces the server to restart
|
|
136
|
+
tself. Predictably, interrupt and terminate (``SIGINT`` and ``SIGHUP``) will shut
|
|
137
|
+
down the server, whether it be an instance of ``puppetd`` or ``puppetmasterd``.
|
|
138
|
+
|
|
139
|
+
Sending the ``SIGUSR1`` signal to an instance of ``puppetd`` will cause it to
|
|
140
|
+
immediately begin a new configuration transaction with the server. This
|
|
141
|
+
signal has no effect on ``puppetmasterd``.
|
|
142
|
+
|
|
143
|
+
Configuration Parameter Reference
|
|
144
|
+
---------------------------------
|
|
145
|
+
Below is a list of all documented parameters. Not all of them are valid with all
|
|
146
|
+
Puppet executables, but the executables will ignore any inappropriate values.
|
|
147
|
+
|
|
148
|
+
"
|
|
149
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
function = Puppet::Util::Reference.newreference :function, :doc => "All functions available in the parser" do
|
|
2
|
+
Puppet::Parser::Functions.functiondocs
|
|
3
|
+
end
|
|
4
|
+
function.header = "
|
|
5
|
+
There are two types of functions in Puppet: Statements and rvalues.
|
|
6
|
+
Statements stand on their own and do not return arguments; they are used for
|
|
7
|
+
performing stand-alone work like importing. Rvalues return values and can
|
|
8
|
+
only be used in a statement requiring a value, such as an assignment or a case
|
|
9
|
+
statement.
|
|
10
|
+
|
|
11
|
+
Here are the functions available in Puppet:
|
|
12
|
+
|
|
13
|
+
"
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
network = Puppet::Util::Reference.newreference :network, :depth => 2, :doc => "Available network handlers and clients" do
|
|
2
|
+
ret = ""
|
|
3
|
+
Puppet::Network::Handler.subclasses.sort { |a,b| a.to_s <=> b.to_s }.each do |name|
|
|
4
|
+
handler = Puppet::Network::Handler.handler(name)
|
|
5
|
+
|
|
6
|
+
next if ! handler.doc or handler.doc == ""
|
|
7
|
+
|
|
8
|
+
interface = handler.interface
|
|
9
|
+
|
|
10
|
+
ret += h(name, 2)
|
|
11
|
+
|
|
12
|
+
ret += scrub(handler.doc)
|
|
13
|
+
ret += "\n\n"
|
|
14
|
+
ret += option(:prefix, interface.prefix)
|
|
15
|
+
ret += option(:side, handler.side.to_s.capitalize)
|
|
16
|
+
ret += option(:methods, interface.methods.collect { |ary| ary[0] }.join(", ") )
|
|
17
|
+
ret += "\n\n"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
ret
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
network.header = "
|
|
24
|
+
This is a list of all Puppet network interfaces. Each interface is
|
|
25
|
+
implemented in the form of a client and a handler; the handler is loaded
|
|
26
|
+
on the server, and the client knows how to call the handler's methods
|
|
27
|
+
appropriately.
|
|
28
|
+
|
|
29
|
+
Most handlers are meant to be started on the server, usually within
|
|
30
|
+
``puppetmasterd``, and the clients are mostly started on the client,
|
|
31
|
+
usually within ``puppetd``.
|
|
32
|
+
|
|
33
|
+
You can find the server-side handler for each interface at
|
|
34
|
+
``puppet/network/handler/<name>.rb`` and the client class at
|
|
35
|
+
``puppet/network/client/<name>.rb``.
|
|
36
|
+
|
|
37
|
+
"
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# This doesn't get stored in trac, since it changes every time.
|
|
2
|
+
providers = Puppet::Util::Reference.newreference :providers, :title => "Provider Suitability Report", :depth => 1, :dynamic => true, :doc => "Which providers are valid for this machine" do
|
|
3
|
+
types = []
|
|
4
|
+
Puppet::Type.loadall
|
|
5
|
+
Puppet::Type.eachtype do |klass|
|
|
6
|
+
next unless klass.providers.length > 0
|
|
7
|
+
types << klass
|
|
8
|
+
end
|
|
9
|
+
types.sort! { |a,b| a.name.to_s <=> b.name.to_s }
|
|
10
|
+
|
|
11
|
+
unless ARGV.empty?
|
|
12
|
+
types.reject! { |type| ! ARGV.include?(type.name.to_s) }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
ret = "Details about this host:\n\n"
|
|
16
|
+
|
|
17
|
+
# Throw some facts in there, so we know where the report is from.
|
|
18
|
+
["Ruby Version", "Puppet Version", "Operating System", "Operating System Release"].each do |label|
|
|
19
|
+
name = label.gsub(/\s+/, '')
|
|
20
|
+
value = Facter.value(name)
|
|
21
|
+
ret += option(label, value)
|
|
22
|
+
end
|
|
23
|
+
ret += "\n"
|
|
24
|
+
|
|
25
|
+
count = 1
|
|
26
|
+
|
|
27
|
+
# Produce output for each type.
|
|
28
|
+
types.each do |type|
|
|
29
|
+
features = type.features
|
|
30
|
+
ret += "\n" # add a trailing newline
|
|
31
|
+
|
|
32
|
+
# Now build up a table of provider suitability.
|
|
33
|
+
headers = %w{Provider Suitable?} + features.collect { |f| f.to_s }.sort
|
|
34
|
+
|
|
35
|
+
table_data = {}
|
|
36
|
+
|
|
37
|
+
functional = false
|
|
38
|
+
notes = []
|
|
39
|
+
begin
|
|
40
|
+
default = type.defaultprovider.name
|
|
41
|
+
rescue Puppet::DevError
|
|
42
|
+
default = "none"
|
|
43
|
+
end
|
|
44
|
+
type.providers.sort { |a,b| a.to_s <=> b.to_s }.each do |pname|
|
|
45
|
+
data = []
|
|
46
|
+
table_data[pname] = data
|
|
47
|
+
provider = type.provider(pname)
|
|
48
|
+
|
|
49
|
+
# Add the suitability note
|
|
50
|
+
if missing = provider.suitable?(false) and missing.empty?
|
|
51
|
+
data << "**X**"
|
|
52
|
+
suit = true
|
|
53
|
+
functional = true
|
|
54
|
+
else
|
|
55
|
+
data << "[%s]_" % [count] # A pointer to the appropriate footnote
|
|
56
|
+
suit = false
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Add a footnote with the details about why this provider is unsuitable, if that's the case
|
|
60
|
+
unless suit
|
|
61
|
+
details = ".. [%s]\n" % count
|
|
62
|
+
missing.each do |test, values|
|
|
63
|
+
case test
|
|
64
|
+
when :exists:
|
|
65
|
+
details += " - Missing files %s\n" % values.join(", ")
|
|
66
|
+
when :facter:
|
|
67
|
+
values.each do |name, facts|
|
|
68
|
+
details += " - Fact %s (currently %s) not in list %s\n" % [name, Facter.value(name).inspect, facts.join(", ")]
|
|
69
|
+
end
|
|
70
|
+
when :true:
|
|
71
|
+
details += " - Got %s true tests that should have been false\n" % values
|
|
72
|
+
when :false:
|
|
73
|
+
details += " - Got %s false tests that should have been true\n" % values
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
notes << details
|
|
77
|
+
|
|
78
|
+
count += 1
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Add a note for every feature
|
|
82
|
+
features.each do |feature|
|
|
83
|
+
if provider.features.include?(feature)
|
|
84
|
+
data << "**X**"
|
|
85
|
+
else
|
|
86
|
+
data << ""
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
ret += h(type.name.to_s + "_", 2)
|
|
92
|
+
|
|
93
|
+
ret += ".. _%s: %s\n\n" % [type.name, "http://reductivelabs.com/trac/puppet/wiki/TypeReference#%s" % type.name]
|
|
94
|
+
ret += option("Default provider", default)
|
|
95
|
+
ret += doctable(headers, table_data)
|
|
96
|
+
|
|
97
|
+
notes.each do |note|
|
|
98
|
+
ret += note + "\n"
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
ret += "\n"
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
ret += "\n"
|
|
105
|
+
|
|
106
|
+
ret
|
|
107
|
+
end
|
|
108
|
+
providers.header = "
|
|
109
|
+
Puppet resource types are usually backed by multiple implementations called ``providers``,
|
|
110
|
+
which handle variance between platforms and tools.
|
|
111
|
+
|
|
112
|
+
Different providers are suitable or unsuitable on different platforms based on things
|
|
113
|
+
like the presence of a given tool.
|
|
114
|
+
|
|
115
|
+
Here are all of the provider-backed types and their different providers. Any unmentioned
|
|
116
|
+
types do not use providers yet.
|
|
117
|
+
|
|
118
|
+
"
|