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.
Files changed (266) hide show
  1. data/CHANGELOG +156 -0
  2. data/README +2 -2
  3. data/Rakefile +6 -6
  4. data/bin/filebucket +212 -0
  5. data/bin/puppet +2 -0
  6. data/bin/puppetca +2 -4
  7. data/bin/puppetd +16 -15
  8. data/bin/puppetdoc +46 -496
  9. data/bin/puppetmasterd +3 -5
  10. data/bin/puppetrun +8 -3
  11. data/bin/ralsh +271 -0
  12. data/conf/redhat/client.init +1 -1
  13. data/conf/redhat/puppet.spec +13 -2
  14. data/conf/solaris/pkginfo +1 -1
  15. data/ext/puppet-test +374 -0
  16. data/install.rb +40 -31
  17. data/lib/puppet.rb +39 -4
  18. data/lib/puppet/config_stores/rest.rb +60 -0
  19. data/lib/puppet/configuration.rb +312 -17
  20. data/lib/puppet/external/event-loop/event-loop.rb +4 -0
  21. data/lib/puppet/external/gratr/rdot.rb +1 -1
  22. data/lib/puppet/fact_stores/yaml.rb +42 -0
  23. data/lib/puppet/feature/base.rb +4 -1
  24. data/lib/puppet/metatype/attributes.rb +20 -43
  25. data/lib/puppet/metatype/container.rb +1 -36
  26. data/lib/puppet/metatype/evaluation.rb +48 -19
  27. data/lib/puppet/metatype/instances.rb +35 -1
  28. data/lib/puppet/metatype/metaparams.rb +23 -19
  29. data/lib/puppet/metatype/providers.rb +25 -38
  30. data/lib/puppet/network/client/ca.rb +8 -5
  31. data/lib/puppet/network/client/master.rb +59 -17
  32. data/lib/puppet/network/handler.rb +18 -1
  33. data/lib/puppet/network/handler/ca.rb +9 -3
  34. data/lib/puppet/network/handler/facts.rb +70 -0
  35. data/lib/puppet/network/handler/filebucket.rb +4 -1
  36. data/lib/puppet/network/handler/fileserver.rb +65 -21
  37. data/lib/puppet/network/handler/master.rb +6 -3
  38. data/lib/puppet/network/handler/report.rb +12 -26
  39. data/lib/puppet/network/handler/resource.rb +14 -2
  40. data/lib/puppet/network/handler/runner.rb +5 -1
  41. data/lib/puppet/network/handler/status.rb +5 -1
  42. data/lib/puppet/network/server/mongrel.rb +4 -4
  43. data/lib/puppet/network/server/webrick.rb +14 -3
  44. data/lib/puppet/parameter.rb +30 -25
  45. data/lib/puppet/parser/ast.rb +1 -6
  46. data/lib/puppet/parser/ast/component.rb +23 -20
  47. data/lib/puppet/parser/ast/hostclass.rb +7 -11
  48. data/lib/puppet/parser/ast/leaf.rb +4 -1
  49. data/lib/puppet/parser/ast/node.rb +6 -8
  50. data/lib/puppet/parser/functions.rb +7 -4
  51. data/lib/puppet/parser/interpreter.rb +155 -205
  52. data/lib/puppet/parser/lexer.rb +35 -2
  53. data/lib/puppet/parser/parser.rb +705 -612
  54. data/lib/puppet/parser/resource.rb +91 -48
  55. data/lib/puppet/parser/resource/param.rb +52 -29
  56. data/lib/puppet/parser/scope.rb +28 -23
  57. data/lib/puppet/pgraph.rb +26 -21
  58. data/lib/puppet/propertychange.rb +12 -12
  59. data/lib/puppet/provider.rb +102 -31
  60. data/lib/puppet/provider/cron/crontab.rb +7 -8
  61. data/lib/puppet/provider/group/groupadd.rb +4 -4
  62. data/lib/puppet/provider/group/pw.rb +3 -3
  63. data/lib/puppet/provider/mount.rb +8 -8
  64. data/lib/puppet/provider/mount/netinfo.rb +5 -5
  65. data/lib/puppet/provider/mount/parsed.rb +2 -2
  66. data/lib/puppet/provider/nameservice.rb +19 -31
  67. data/lib/puppet/provider/nameservice/netinfo.rb +14 -14
  68. data/lib/puppet/provider/nameservice/objectadd.rb +4 -4
  69. data/lib/puppet/provider/nameservice/pw.rb +4 -4
  70. data/lib/puppet/provider/package.rb +31 -0
  71. data/lib/puppet/provider/package/appdmg.rb +118 -0
  72. data/lib/puppet/provider/package/apple.rb +18 -16
  73. data/lib/puppet/provider/package/apt.rb +13 -15
  74. data/lib/puppet/provider/package/aptitude.rb +5 -3
  75. data/lib/puppet/provider/package/aptrpm.rb +9 -11
  76. data/lib/puppet/provider/package/blastwave.rb +9 -9
  77. data/lib/puppet/provider/package/darwinport.rb +12 -11
  78. data/lib/puppet/provider/package/dpkg.rb +20 -12
  79. data/lib/puppet/provider/package/fink.rb +87 -0
  80. data/lib/puppet/provider/package/freebsd.rb +10 -11
  81. data/lib/puppet/provider/package/gem.rb +15 -15
  82. data/lib/puppet/provider/package/openbsd.rb +12 -17
  83. data/lib/puppet/provider/package/pkgdmg.rb +90 -16
  84. data/lib/puppet/provider/package/portage.rb +20 -14
  85. data/lib/puppet/provider/package/ports.rb +15 -13
  86. data/lib/puppet/provider/package/rpm.rb +20 -23
  87. data/lib/puppet/provider/package/rug.rb +6 -8
  88. data/lib/puppet/provider/package/sun.rb +20 -18
  89. data/lib/puppet/provider/package/sunfreeware.rb +2 -2
  90. data/lib/puppet/provider/package/up2date.rb +6 -10
  91. data/lib/puppet/provider/package/urpmi.rb +51 -0
  92. data/lib/puppet/provider/package/yum.rb +15 -13
  93. data/lib/puppet/provider/parsedfile.rb +53 -63
  94. data/lib/puppet/provider/service/base.rb +13 -15
  95. data/lib/puppet/provider/service/debian.rb +4 -4
  96. data/lib/puppet/provider/service/gentoo.rb +4 -4
  97. data/lib/puppet/provider/service/init.rb +22 -15
  98. data/lib/puppet/provider/service/redhat.rb +6 -6
  99. data/lib/puppet/provider/service/smf.rb +6 -6
  100. data/lib/puppet/provider/user/netinfo.rb +5 -5
  101. data/lib/puppet/provider/user/pw.rb +10 -5
  102. data/lib/puppet/provider/user/useradd.rb +9 -14
  103. data/lib/puppet/provider/zone/solaris.rb +80 -45
  104. data/lib/puppet/rails.rb +3 -34
  105. data/lib/puppet/rails/database/schema.rb +45 -24
  106. data/lib/puppet/rails/fact_value.rb +1 -0
  107. data/lib/puppet/rails/host.rb +69 -40
  108. data/lib/puppet/rails/param_name.rb +3 -8
  109. data/lib/puppet/rails/param_value.rb +2 -1
  110. data/lib/puppet/rails/puppet_class.rb +0 -2
  111. data/lib/puppet/rails/puppet_tag.rb +5 -0
  112. data/lib/puppet/rails/resource.rb +41 -17
  113. data/lib/puppet/rails/resource_tag.rb +4 -0
  114. data/lib/puppet/reference/configuration.rb +149 -0
  115. data/lib/puppet/reference/function.rb +13 -0
  116. data/lib/puppet/reference/network.rb +37 -0
  117. data/lib/puppet/reference/providers.rb +118 -0
  118. data/lib/puppet/reference/report.rb +21 -0
  119. data/lib/puppet/reference/type.rb +152 -0
  120. data/lib/puppet/reports/rrdgraph.rb +21 -7
  121. data/lib/puppet/reports/tagmail.rb +4 -1
  122. data/lib/puppet/sslcertificates.rb +1 -49
  123. data/lib/puppet/sslcertificates/ca.rb +2 -79
  124. data/lib/puppet/sslcertificates/inventory.rb +0 -10
  125. data/lib/puppet/transaction.rb +24 -41
  126. data/lib/puppet/transaction/report.rb +27 -1
  127. data/lib/puppet/type.rb +7 -43
  128. data/lib/puppet/type/component.rb +198 -124
  129. data/lib/puppet/type/cron.rb +51 -42
  130. data/lib/puppet/type/exec.rb +20 -19
  131. data/lib/puppet/type/group.rb +6 -55
  132. data/lib/puppet/type/host.rb +16 -37
  133. data/lib/puppet/type/mount.rb +30 -17
  134. data/lib/puppet/type/notify.rb +7 -8
  135. data/lib/puppet/type/package.rb +44 -80
  136. data/lib/puppet/type/pfile.rb +50 -41
  137. data/lib/puppet/type/pfile/checksum.rb +82 -95
  138. data/lib/puppet/type/pfile/content.rb +21 -25
  139. data/lib/puppet/type/pfile/ensure.rb +32 -30
  140. data/lib/puppet/type/pfile/group.rb +21 -26
  141. data/lib/puppet/type/pfile/mode.rb +25 -32
  142. data/lib/puppet/type/pfile/owner.rb +23 -27
  143. data/lib/puppet/type/pfile/source.rb +42 -33
  144. data/lib/puppet/type/pfile/target.rb +20 -18
  145. data/lib/puppet/type/pfile/type.rb +6 -7
  146. data/lib/puppet/type/pfilebucket.rb +3 -3
  147. data/lib/puppet/type/port.rb +5 -7
  148. data/lib/puppet/type/property.rb +58 -61
  149. data/lib/puppet/type/resources.rb +12 -8
  150. data/lib/puppet/type/schedule.rb +8 -8
  151. data/lib/puppet/type/service.rb +26 -33
  152. data/lib/puppet/type/sshkey.rb +6 -7
  153. data/lib/puppet/type/tidy.rb +41 -35
  154. data/lib/puppet/type/user.rb +34 -67
  155. data/lib/puppet/type/yumrepo.rb +27 -12
  156. data/lib/puppet/type/zone.rb +71 -110
  157. data/lib/puppet/util.rb +46 -61
  158. data/lib/puppet/util/autoload.rb +59 -47
  159. data/lib/puppet/util/config.rb +160 -18
  160. data/lib/puppet/util/config_store.rb +61 -0
  161. data/lib/puppet/util/fact_store.rb +60 -0
  162. data/lib/puppet/util/instance_loader.rb +74 -0
  163. data/lib/puppet/util/loadedfile.rb +5 -8
  164. data/lib/puppet/util/metric.rb +17 -25
  165. data/lib/puppet/util/posix.rb +39 -7
  166. data/lib/puppet/util/provider_features.rb +9 -1
  167. data/lib/puppet/util/rails/collection_merger.rb +16 -1
  168. data/lib/puppet/util/reference.rb +189 -0
  169. data/lib/puppet/util/storage.rb +2 -2
  170. data/lib/puppet/util/subclass_loader.rb +9 -2
  171. data/test/language/ast.rb +4 -148
  172. data/test/language/ast/component.rb +10 -1
  173. data/test/language/collector.rb +1 -191
  174. data/test/language/interpreter.rb +284 -327
  175. data/test/language/lexer.rb +13 -1
  176. data/test/language/node.rb +1 -1
  177. data/test/language/parser.rb +17 -4
  178. data/test/language/resource.rb +67 -101
  179. data/test/language/scope.rb +18 -3
  180. data/test/language/snippets.rb +114 -151
  181. data/test/lib/puppettest.rb +13 -0
  182. data/test/lib/puppettest/exetest.rb +7 -0
  183. data/test/lib/puppettest/fakes.rb +39 -28
  184. data/test/lib/puppettest/railstesting.rb +1 -1
  185. data/test/lib/puppettest/support/assertions.rb +2 -2
  186. data/test/lib/puppettest/support/collection.rb +30 -0
  187. data/test/network/client/ca.rb +27 -1
  188. data/test/network/client/client.rb +3 -3
  189. data/test/network/client/master.rb +102 -1
  190. data/test/network/handler/ca.rb +35 -1
  191. data/test/network/handler/facts.rb +112 -0
  192. data/test/network/handler/fileserver.rb +25 -1
  193. data/test/network/handler/handler.rb +2 -2
  194. data/test/network/handler/master.rb +2 -49
  195. data/test/network/handler/resource.rb +5 -6
  196. data/test/network/server/mongrel_test.rb +65 -0
  197. data/test/network/server/webrick.rb +2 -2
  198. data/test/network/xmlrpc/client.rb +2 -1
  199. data/test/network/xmlrpc/processor.rb +2 -1
  200. data/test/other/pgraph.rb +6 -5
  201. data/test/other/propertychange.rb +11 -12
  202. data/test/other/report.rb +44 -27
  203. data/test/other/transactions.rb +17 -16
  204. data/test/puppet/tc_suidmanager.rb +2 -2
  205. data/test/rails/ast.rb +74 -0
  206. data/test/rails/collection.rb +214 -0
  207. data/test/rails/host.rb +49 -24
  208. data/test/rails/interpreter.rb +91 -0
  209. data/test/rails/railsparameter.rb +22 -11
  210. data/test/rails/railsresource.rb +140 -7
  211. data/test/ral/manager/attributes.rb +37 -13
  212. data/test/ral/manager/instances.rb +82 -0
  213. data/test/ral/manager/provider.rb +60 -22
  214. data/test/ral/manager/type.rb +9 -6
  215. data/test/ral/providers/cron/crontab.rb +59 -7
  216. data/test/ral/providers/group.rb +7 -7
  217. data/test/ral/providers/host/netinfo.rb +5 -6
  218. data/test/ral/providers/host/parsed.rb +4 -4
  219. data/test/ral/providers/mount/parsed.rb +11 -6
  220. data/test/ral/providers/nameservice.rb +2 -2
  221. data/test/ral/providers/package.rb +39 -14
  222. data/test/ral/providers/package/apt.rb +72 -3
  223. data/test/ral/providers/package/aptitude.rb +15 -12
  224. data/test/ral/providers/package/aptrpm.rb +3 -3
  225. data/test/ral/providers/package/dpkg.rb +2 -2
  226. data/test/ral/providers/parsedfile.rb +114 -88
  227. data/test/ral/providers/{parsedport.rb → port/parsed.rb} +1 -1
  228. data/test/ral/providers/provider.rb +93 -13
  229. data/test/ral/providers/service.rb +52 -26
  230. data/test/ral/providers/sshkey/parsed.rb +3 -3
  231. data/test/ral/providers/user.rb +19 -20
  232. data/test/ral/providers/user/useradd.rb +1 -5
  233. data/test/ral/types/cron.rb +49 -36
  234. data/test/ral/types/file.rb +38 -35
  235. data/test/ral/types/file/target.rb +4 -4
  236. data/test/ral/types/filesources.rb +24 -22
  237. data/test/ral/types/group.rb +4 -2
  238. data/test/ral/types/host.rb +17 -10
  239. data/test/ral/types/mount.rb +40 -23
  240. data/test/ral/types/package.rb +62 -5
  241. data/test/ral/types/parameter.rb +2 -2
  242. data/test/ral/types/property.rb +27 -20
  243. data/test/ral/types/resources.rb +4 -16
  244. data/test/ral/types/schedule.rb +2 -2
  245. data/test/ral/types/service.rb +2 -3
  246. data/test/ral/types/sshkey.rb +3 -3
  247. data/test/ral/types/tidy.rb +6 -15
  248. data/test/ral/types/user.rb +17 -17
  249. data/test/ral/types/yumrepo.rb +2 -2
  250. data/test/ral/types/zone.rb +71 -87
  251. data/test/util/autoload.rb +6 -21
  252. data/test/util/config.rb +201 -101
  253. data/test/util/fact_store.rb +67 -0
  254. data/test/util/features.rb +9 -6
  255. data/test/util/instance_loader.rb +53 -0
  256. data/test/util/loadedfile.rb +17 -1
  257. data/test/util/metrics.rb +54 -57
  258. data/test/util/posixtest.rb +8 -11
  259. data/test/util/utiltest.rb +31 -2
  260. metadata +520 -492
  261. data/TODO +0 -4
  262. data/lib/puppet/network/client/logger.rb +0 -6
  263. data/lib/puppet/network/handler/logger.rb +0 -52
  264. data/lib/puppet/rails/database/001_add_indexes.rb +0 -38
  265. data/lib/puppet/type/parsedtype.rb +0 -219
  266. 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] = self.param_values.find(:all).collect { |v| v.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 2296 2007-03-18 22:48:57Z luke $
23
+ # $Id: param_name.rb 2565 2007-06-12 00:31:16Z ballman $
@@ -1,5 +1,6 @@
1
1
  class Puppet::Rails::ParamValue < ActiveRecord::Base
2
2
  belongs_to :param_name
3
+ belongs_to :resource
3
4
  end
4
5
 
5
- # $Id: param_value.rb 2296 2007-03-18 22:48:57Z luke $
6
+ # $Id: param_value.rb 2565 2007-06-12 00:31:16Z ballman $
@@ -2,8 +2,6 @@ class Puppet::Rails::PuppetClass < ActiveRecord::Base
2
2
  has_many :resources
3
3
  has_many :source_files
4
4
  has_many :hosts
5
-
6
- acts_as_taggable
7
5
  end
8
6
 
9
7
  # $Id$
@@ -0,0 +1,5 @@
1
+ require 'puppet/rails/resource_tag'
2
+ class Puppet::Rails::PuppetTag < ActiveRecord::Base
3
+ has_many :resource_tags, :dependent => :destroy
4
+ has_many :resources, :through => :resource_tags
5
+ end
@@ -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, :through => :param_names
10
- has_many :param_names, :dependent => :destroy
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
- acts_as_taggable
15
-
16
- def tags=(tags)
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.new(:filename => file)
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 = pn.param_values.find(:first)
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
- hash = {}
53
- self.param_values.find(:all).each do |pvalue|
54
- pname = pvalue.param_name.name
55
- hash.store(pname, pvalue.value)
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
- return hash
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 2350 2007-03-24 21:24:29Z luke $
119
+ # $Id: resource.rb 2597 2007-06-17 21:41:50Z luke $
@@ -0,0 +1,4 @@
1
+ class Puppet::Rails::ResourceTag < ActiveRecord::Base
2
+ belongs_to :puppet_tag
3
+ belongs_to :resource
4
+ end
@@ -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
+ "