puppet 0.9.2 → 0.13.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.

Files changed (213) hide show
  1. data/CHANGELOG +58 -0
  2. data/README +21 -18
  3. data/Rakefile +176 -36
  4. data/bin/puppet +34 -48
  5. data/bin/puppetca +41 -28
  6. data/bin/puppetd +87 -65
  7. data/bin/puppetdoc +99 -23
  8. data/bin/puppetmasterd +72 -91
  9. data/conf/redhat/client.init +80 -0
  10. data/conf/redhat/client.sysconfig +11 -0
  11. data/conf/redhat/fileserver.conf +12 -0
  12. data/conf/redhat/puppet.spec +130 -0
  13. data/conf/redhat/server.init +89 -0
  14. data/conf/redhat/server.sysconfig +9 -0
  15. data/examples/code/allatonce +2 -2
  16. data/examples/code/assignments +1 -1
  17. data/examples/code/classing +2 -2
  18. data/examples/code/components +2 -2
  19. data/examples/code/file.bl +5 -5
  20. data/examples/code/filedefaults +2 -2
  21. data/examples/code/fileparsing +1 -1
  22. data/examples/code/filerecursion +1 -1
  23. data/examples/code/functions +1 -1
  24. data/examples/code/groups +1 -1
  25. data/examples/code/importing +1 -1
  26. data/examples/code/nodes +1 -1
  27. data/examples/code/one +1 -1
  28. data/examples/code/relationships +2 -2
  29. data/examples/code/simpletests +5 -5
  30. data/examples/code/snippets/argumentdefaults +2 -2
  31. data/examples/code/snippets/casestatement +16 -8
  32. data/examples/code/snippets/classheirarchy.pp +4 -4
  33. data/examples/code/snippets/classincludes.pp +4 -4
  34. data/examples/code/snippets/classpathtest +2 -2
  35. data/examples/code/snippets/componentmetaparams.pp +11 -0
  36. data/examples/code/snippets/dirchmod +5 -5
  37. data/examples/code/snippets/emptyclass.pp +9 -0
  38. data/examples/code/snippets/failmissingexecpath.pp +1 -1
  39. data/examples/code/snippets/falsevalues.pp +1 -1
  40. data/examples/code/snippets/filecreate +5 -5
  41. data/examples/code/snippets/implicititeration +5 -5
  42. data/examples/code/snippets/multipleinstances +4 -4
  43. data/examples/code/snippets/namevartest +3 -3
  44. data/examples/code/snippets/scopetest +1 -1
  45. data/examples/code/snippets/selectorvalues.pp +3 -3
  46. data/examples/code/snippets/simpledefaults +2 -2
  47. data/examples/code/snippets/simpleselector +5 -5
  48. data/examples/code/snippets/singleary.pp +19 -0
  49. data/examples/root/etc/init.d/sleeper +3 -2
  50. data/ext/emacs/puppet-mode-init.el +6 -0
  51. data/ext/emacs/puppet-mode.el +189 -0
  52. data/ext/ldap/puppet.schema +17 -0
  53. data/ext/{module:puppet → module_puppet} +30 -31
  54. data/ext/vim/filetype.vim +9 -0
  55. data/ext/vim/puppet.vim +87 -0
  56. data/install.rb +63 -30
  57. data/lib/puppet.rb +216 -122
  58. data/lib/puppet/client.rb +51 -416
  59. data/lib/puppet/client/ca.rb +17 -0
  60. data/lib/puppet/client/dipper.rb +78 -0
  61. data/lib/puppet/client/file.rb +20 -0
  62. data/lib/puppet/client/log.rb +17 -0
  63. data/lib/puppet/client/master.rb +246 -0
  64. data/lib/puppet/client/proxy.rb +27 -0
  65. data/lib/puppet/client/status.rb +7 -0
  66. data/lib/puppet/config.rb +563 -13
  67. data/lib/puppet/daemon.rb +50 -22
  68. data/lib/puppet/element.rb +4 -4
  69. data/lib/puppet/event-loop.rb +1 -0
  70. data/lib/puppet/event-loop/better-definers.rb +367 -0
  71. data/lib/puppet/event-loop/event-loop.rb +355 -0
  72. data/lib/puppet/event-loop/signal-system.rb +220 -0
  73. data/lib/puppet/event.rb +9 -11
  74. data/lib/puppet/filetype.rb +195 -0
  75. data/lib/puppet/log.rb +35 -12
  76. data/lib/puppet/metric.rb +2 -2
  77. data/lib/puppet/networkclient.rb +145 -0
  78. data/lib/puppet/parameter.rb +335 -0
  79. data/lib/puppet/parser/ast.rb +42 -1453
  80. data/lib/puppet/parser/ast/astarray.rb +88 -0
  81. data/lib/puppet/parser/ast/branch.rb +47 -0
  82. data/lib/puppet/parser/ast/caseopt.rb +66 -0
  83. data/lib/puppet/parser/ast/casestatement.rb +78 -0
  84. data/lib/puppet/parser/ast/classdef.rb +78 -0
  85. data/lib/puppet/parser/ast/compdef.rb +111 -0
  86. data/lib/puppet/parser/ast/component.rb +105 -0
  87. data/lib/puppet/parser/ast/hostclass.rb +82 -0
  88. data/lib/puppet/parser/ast/leaf.rb +86 -0
  89. data/lib/puppet/parser/ast/node.rb +103 -0
  90. data/lib/puppet/parser/ast/nodedef.rb +68 -0
  91. data/lib/puppet/parser/ast/objectdef.rb +336 -0
  92. data/lib/puppet/parser/ast/objectparam.rb +30 -0
  93. data/lib/puppet/parser/ast/objectref.rb +76 -0
  94. data/lib/puppet/parser/ast/selector.rb +60 -0
  95. data/lib/puppet/parser/ast/typedefaults.rb +45 -0
  96. data/lib/puppet/parser/ast/vardef.rb +44 -0
  97. data/lib/puppet/parser/interpreter.rb +31 -14
  98. data/lib/puppet/parser/lexer.rb +2 -4
  99. data/lib/puppet/parser/parser.rb +332 -242
  100. data/lib/puppet/parser/scope.rb +55 -38
  101. data/lib/puppet/server.rb +43 -44
  102. data/lib/puppet/server/authstore.rb +3 -6
  103. data/lib/puppet/server/ca.rb +5 -2
  104. data/lib/puppet/server/filebucket.rb +2 -4
  105. data/lib/puppet/server/fileserver.rb +28 -12
  106. data/lib/puppet/server/logger.rb +15 -4
  107. data/lib/puppet/server/master.rb +62 -7
  108. data/lib/puppet/sslcertificates.rb +41 -607
  109. data/lib/puppet/sslcertificates/ca.rb +291 -0
  110. data/lib/puppet/sslcertificates/certificate.rb +283 -0
  111. data/lib/puppet/statechange.rb +6 -1
  112. data/lib/puppet/storage.rb +67 -56
  113. data/lib/puppet/transaction.rb +25 -9
  114. data/lib/puppet/transportable.rb +102 -22
  115. data/lib/puppet/type.rb +1096 -315
  116. data/lib/puppet/type/component.rb +30 -21
  117. data/lib/puppet/type/cron.rb +409 -448
  118. data/lib/puppet/type/exec.rb +234 -174
  119. data/lib/puppet/type/group.rb +65 -82
  120. data/lib/puppet/type/nameservice.rb +247 -3
  121. data/lib/puppet/type/nameservice/netinfo.rb +29 -40
  122. data/lib/puppet/type/nameservice/objectadd.rb +52 -66
  123. data/lib/puppet/type/nameservice/posix.rb +6 -194
  124. data/lib/puppet/type/package.rb +447 -295
  125. data/lib/puppet/type/package/apt.rb +51 -50
  126. data/lib/puppet/type/package/bsd.rb +82 -0
  127. data/lib/puppet/type/package/dpkg.rb +85 -88
  128. data/lib/puppet/type/package/rpm.rb +67 -63
  129. data/lib/puppet/type/package/sun.rb +119 -98
  130. data/lib/puppet/type/package/yum.rb +41 -37
  131. data/lib/puppet/type/parsedtype.rb +295 -0
  132. data/lib/puppet/type/parsedtype/host.rb +143 -0
  133. data/lib/puppet/type/parsedtype/port.rb +232 -0
  134. data/lib/puppet/type/parsedtype/sshkey.rb +129 -0
  135. data/lib/puppet/type/pfile.rb +484 -460
  136. data/lib/puppet/type/pfile/checksum.rb +237 -181
  137. data/lib/puppet/type/pfile/content.rb +67 -0
  138. data/lib/puppet/type/pfile/ensure.rb +212 -0
  139. data/lib/puppet/type/pfile/group.rb +106 -105
  140. data/lib/puppet/type/pfile/mode.rb +98 -101
  141. data/lib/puppet/type/pfile/source.rb +228 -209
  142. data/lib/puppet/type/pfile/type.rb +18 -21
  143. data/lib/puppet/type/pfile/uid.rb +127 -130
  144. data/lib/puppet/type/pfilebucket.rb +68 -63
  145. data/lib/puppet/type/schedule.rb +341 -0
  146. data/lib/puppet/type/service.rb +351 -255
  147. data/lib/puppet/type/service/base.rb +9 -14
  148. data/lib/puppet/type/service/debian.rb +32 -38
  149. data/lib/puppet/type/service/init.rb +130 -130
  150. data/lib/puppet/type/service/smf.rb +48 -20
  151. data/lib/puppet/type/state.rb +229 -16
  152. data/lib/puppet/type/symlink.rb +51 -63
  153. data/lib/puppet/type/tidy.rb +105 -102
  154. data/lib/puppet/type/user.rb +118 -180
  155. data/lib/puppet/util.rb +100 -6
  156. data/test/certmgr/certmgr.rb +0 -1
  157. data/test/client/client.rb +4 -4
  158. data/test/executables/puppetbin.rb +7 -14
  159. data/test/executables/puppetca.rb +18 -24
  160. data/test/executables/puppetd.rb +7 -16
  161. data/test/executables/puppetmasterd.rb +7 -9
  162. data/test/executables/puppetmodule.rb +11 -16
  163. data/test/language/ast.rb +11 -7
  164. data/test/language/interpreter.rb +1 -1
  165. data/test/language/scope.rb +2 -0
  166. data/test/language/snippets.rb +30 -5
  167. data/test/language/transportable.rb +77 -0
  168. data/test/other/config.rb +316 -0
  169. data/test/other/events.rb +22 -21
  170. data/test/other/log.rb +14 -14
  171. data/test/other/metrics.rb +4 -8
  172. data/test/other/overrides.rb +5 -5
  173. data/test/other/relationships.rb +4 -2
  174. data/test/other/storage.rb +64 -3
  175. data/test/other/transactions.rb +20 -20
  176. data/test/parser/parser.rb +7 -4
  177. data/test/puppet/conffiles.rb +12 -12
  178. data/test/puppet/defaults.rb +13 -11
  179. data/test/puppet/utiltest.rb +14 -11
  180. data/test/puppettest.rb +156 -48
  181. data/test/server/bucket.rb +2 -2
  182. data/test/server/fileserver.rb +6 -6
  183. data/test/server/logger.rb +19 -11
  184. data/test/server/master.rb +33 -4
  185. data/test/server/server.rb +2 -7
  186. data/test/types/basic.rb +5 -7
  187. data/test/types/component.rb +22 -18
  188. data/test/types/cron.rb +111 -44
  189. data/test/types/exec.rb +116 -59
  190. data/test/types/file.rb +262 -137
  191. data/test/types/filebucket.rb +13 -15
  192. data/test/types/fileignoresource.rb +12 -16
  193. data/test/types/filesources.rb +73 -48
  194. data/test/types/filetype.rb +13 -15
  195. data/test/types/group.rb +15 -13
  196. data/test/types/host.rb +146 -0
  197. data/test/types/package.rb +74 -63
  198. data/test/types/port.rb +139 -0
  199. data/test/types/query.rb +8 -8
  200. data/test/types/schedule.rb +335 -0
  201. data/test/types/service.rb +137 -21
  202. data/test/types/sshkey.rb +140 -0
  203. data/test/types/symlink.rb +3 -5
  204. data/test/types/tidy.rb +5 -14
  205. data/test/types/type.rb +67 -11
  206. data/test/types/user.rb +25 -23
  207. metadata +186 -122
  208. data/lib/puppet/type/pfile/create.rb +0 -108
  209. data/lib/puppet/type/pprocess.rb +0 -97
  210. data/lib/puppet/type/typegen.rb +0 -149
  211. data/lib/puppet/type/typegen/filerecord.rb +0 -243
  212. data/lib/puppet/type/typegen/filetype.rb +0 -316
  213. data/test/other/state.rb +0 -106
@@ -1,15 +1,15 @@
1
- # $Id: implicititeration 589 2005-08-25 20:54:16Z luke $
1
+ # $Id: implicititeration 832 2006-01-17 07:11:50Z luke $
2
2
 
3
3
  $files = ["/tmp/iterationatest", "/tmp/iterationbtest"]
4
4
 
5
- file { $files: create => true, mode => 755 }
5
+ file { $files: ensure => file, mode => 755 }
6
6
 
7
7
  file { ["/tmp/iterationctest", "/tmp/iterationdtest"]:
8
- create => true,
8
+ ensure => file,
9
9
  mode => 755
10
10
  }
11
11
 
12
12
  file {
13
- ["/tmp/iterationetest", "/tmp/iterationftest"]: create => true, mode => 755;
14
- ["/tmp/iterationgtest", "/tmp/iterationhtest"]: create => true, mode => 755;
13
+ ["/tmp/iterationetest", "/tmp/iterationftest"]: ensure => file, mode => 755;
14
+ ["/tmp/iterationgtest", "/tmp/iterationhtest"]: ensure => file, mode => 755;
15
15
  }
@@ -1,7 +1,7 @@
1
- # $Id: multipleinstances 589 2005-08-25 20:54:16Z luke $
1
+ # $Id: multipleinstances 832 2006-01-17 07:11:50Z luke $
2
2
 
3
3
  file {
4
- "/tmp/multipleinstancesa": create => true, mode => 755;
5
- "/tmp/multipleinstancesb": create => true, mode => 755;
6
- "/tmp/multipleinstancesc": create => true, mode => 755;
4
+ "/tmp/multipleinstancesa": ensure => file, mode => 755;
5
+ "/tmp/multipleinstancesb": ensure => file, mode => 755;
6
+ "/tmp/multipleinstancesc": ensure => file, mode => 755;
7
7
  }
@@ -1,9 +1,9 @@
1
- define filetest(mode, create = true) {
1
+ define filetest(mode, ensure = file) {
2
2
  file { $name:
3
3
  mode => $mode,
4
- create => $create
4
+ ensure => $ensure
5
5
  }
6
6
  }
7
7
 
8
8
  filetest { "/tmp/testfiletest": mode => 644}
9
- filetest { "/tmp/testdirtest": mode => 755, create => directory}
9
+ filetest { "/tmp/testdirtest": mode => 755, ensure => directory}
@@ -2,7 +2,7 @@
2
2
  $mode = 640
3
3
 
4
4
  define thing {
5
- file { "/tmp/scopetest": create => true, mode => $mode }
5
+ file { "/tmp/scopetest": ensure => file, mode => $mode }
6
6
  }
7
7
 
8
8
  class testing {
@@ -17,6 +17,6 @@ $mode3 = $value3 ? {
17
17
  default => 644
18
18
  }
19
19
 
20
- file { "/tmp/selectorvalues1": create => true, mode => $mode1 }
21
- file { "/tmp/selectorvalues2": create => true, mode => $mode2 }
22
- file { "/tmp/selectorvalues3": create => true, mode => $mode3 }
20
+ file { "/tmp/selectorvalues1": ensure => file, mode => $mode1 }
21
+ file { "/tmp/selectorvalues2": ensure => file, mode => $mode2 }
22
+ file { "/tmp/selectorvalues3": ensure => file, mode => $mode3 }
@@ -1,5 +1,5 @@
1
- # $Id: simpledefaults 576 2005-08-23 16:09:14Z luke $
1
+ # $Id: simpledefaults 832 2006-01-17 07:11:50Z luke $
2
2
 
3
3
  File { mode => 755 }
4
4
 
5
- file { "/tmp/defaulttest": create => true }
5
+ file { "/tmp/defaulttest": ensure => file }
@@ -1,9 +1,9 @@
1
- # $Id: simpleselector 576 2005-08-23 16:09:14Z luke $
1
+ # $Id: simpleselector 832 2006-01-17 07:11:50Z luke $
2
2
 
3
3
  $var = "value"
4
4
 
5
5
  file { "/tmp/snippetselectatest":
6
- create => true,
6
+ ensure => file,
7
7
  mode => $var ? {
8
8
  nottrue => 641,
9
9
  value => 755
@@ -11,7 +11,7 @@ file { "/tmp/snippetselectatest":
11
11
  }
12
12
 
13
13
  file { "/tmp/snippetselectbtest":
14
- create => true,
14
+ ensure => file,
15
15
  mode => $var ? {
16
16
  nottrue => 644,
17
17
  default => 755
@@ -21,7 +21,7 @@ file { "/tmp/snippetselectbtest":
21
21
  $othervar = "complex value"
22
22
 
23
23
  file { "/tmp/snippetselectctest":
24
- create => true,
24
+ ensure => file,
25
25
  mode => $othervar ? {
26
26
  "complex value" => 755,
27
27
  default => 644
@@ -30,7 +30,7 @@ file { "/tmp/snippetselectctest":
30
30
  $anothervar = Yayness
31
31
 
32
32
  file { "/tmp/snippetselectdtest":
33
- create => true,
33
+ ensure => file,
34
34
  mode => $anothervar ? {
35
35
  Yayness => 755,
36
36
  default => 644
@@ -0,0 +1,19 @@
1
+ # $Id: singleary.pp 841 2006-01-18 17:24:15Z luke $
2
+
3
+ file { "/tmp/singleary1":
4
+ ensure => file
5
+ }
6
+
7
+ file { "/tmp/singleary2":
8
+ ensure => file
9
+ }
10
+
11
+ file { "/tmp/singleary3":
12
+ ensure => file,
13
+ require => [file["/tmp/singleary1"], file["/tmp/singleary2"]]
14
+ }
15
+
16
+ file { "/tmp/singleary4":
17
+ ensure => file,
18
+ require => [file["/tmp/singleary1"]]
19
+ }
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
2
 
3
- # $Id: sleeper 576 2005-08-23 16:09:14Z luke $
3
+ # $Id: sleeper 787 2006-01-08 00:02:23Z luke $
4
4
 
5
5
  script=$0
6
6
  path=`echo $script | sed 's/etc..*/bin/'`
@@ -15,7 +15,8 @@ fi
15
15
 
16
16
  function start
17
17
  {
18
- sleeper
18
+ cd $path
19
+ ./sleeper
19
20
  }
20
21
 
21
22
  function stop
@@ -0,0 +1,6 @@
1
+ ;;
2
+ ;; Setup puppet-mode for autoloading
3
+ ;;
4
+ (autoload 'puppet-mode "puppet-mode" "Major mode for editing puppet manifests")
5
+
6
+ (add-to-list 'auto-mode-alist '("\\.pp$" . puppet-mode))
@@ -0,0 +1,189 @@
1
+ ;;;
2
+ ;;; puppet-mode.el
3
+ ;;;
4
+ ;;; Author: lutter
5
+ ;;; Description: A simple mode for editing puppet manifests
6
+ ;;;
7
+
8
+ (defconst puppet-mode-version "0.0.1")
9
+
10
+ (defvar puppet-mode-abbrev-table nil
11
+ "Abbrev table in use in puppet-mode buffers.")
12
+
13
+ (define-abbrev-table 'puppet-mode-abbrev-table ())
14
+
15
+ (defvar puppet-mode-map nil "Keymap used in puppet mode.")
16
+
17
+ (if puppet-mode-map
18
+ nil
19
+ (setq puppet-mode-map (make-sparse-keymap))
20
+ ;; (define-key puppet-mode-map "{" 'puppet-electric-brace)
21
+ ;; (define-key puppet-mode-map "}" 'puppet-electric-brace)
22
+ ;; (define-key puppet-mode-map "\e\C-a" 'puppet-beginning-of-defun)
23
+ ;; (define-key puppet-mode-map "\e\C-e" 'puppet-end-of-defun)
24
+ ;; (define-key puppet-mode-map "\e\C-b" 'puppet-backward-sexp)
25
+ ;; (define-key puppet-mode-map "\e\C-f" 'puppet-forward-sexp)
26
+ ;; (define-key puppet-mode-map "\e\C-p" 'puppet-beginning-of-block)
27
+ ;; (define-key puppet-mode-map "\e\C-n" 'puppet-end-of-block)
28
+ ;; (define-key puppet-mode-map "\e\C-h" 'puppet-mark-defun)
29
+ ;; (define-key puppet-mode-map "\e\C-q" 'puppet-indent-exp)
30
+ ;; (define-key puppet-mode-map "\t" 'puppet-indent-command)
31
+ ;; (define-key puppet-mode-map "\C-c\C-e" 'puppet-insert-end)
32
+ ;; (define-key puppet-mode-map "\C-j" 'puppet-reindent-then-newline-and-indent)
33
+ (define-key puppet-mode-map "\C-m" 'newline))
34
+
35
+ (defvar puppet-mode-syntax-table nil
36
+ "Syntax table in use in puppet-mode buffers.")
37
+
38
+ (if puppet-mode-syntax-table
39
+ ()
40
+ (setq puppet-mode-syntax-table (make-syntax-table))
41
+ (modify-syntax-entry ?\' "\"" puppet-mode-syntax-table)
42
+ (modify-syntax-entry ?\" "\"" puppet-mode-syntax-table)
43
+ (modify-syntax-entry ?# "<" puppet-mode-syntax-table)
44
+ (modify-syntax-entry ?\n ">" puppet-mode-syntax-table)
45
+ (modify-syntax-entry ?\\ "\\" puppet-mode-syntax-table)
46
+ (modify-syntax-entry ?$ "." puppet-mode-syntax-table)
47
+ (modify-syntax-entry ?- "_" puppet-mode-syntax-table)
48
+ (modify-syntax-entry ?> "." puppet-mode-syntax-table)
49
+ (modify-syntax-entry ?= "." puppet-mode-syntax-table)
50
+ (modify-syntax-entry ?\; "." puppet-mode-syntax-table)
51
+ (modify-syntax-entry ?\( "()" puppet-mode-syntax-table)
52
+ (modify-syntax-entry ?\) ")(" puppet-mode-syntax-table)
53
+ (modify-syntax-entry ?\{ "(}" puppet-mode-syntax-table)
54
+ (modify-syntax-entry ?\} "){" puppet-mode-syntax-table)
55
+ (modify-syntax-entry ?\[ "(]" puppet-mode-syntax-table)
56
+ (modify-syntax-entry ?\] ")[" puppet-mode-syntax-table)
57
+ )
58
+
59
+ (defcustom puppet-indent-tabs-mode nil
60
+ "*Indentation can insert tabs in puppet mode if this is non-nil."
61
+ :type 'boolean :group 'puppet)
62
+
63
+ (defcustom puppet-comment-column 32
64
+ "*Indentation column of comments."
65
+ :type 'integer :group 'puppet)
66
+
67
+ (defun puppet-mode-variables ()
68
+ (set-syntax-table puppet-mode-syntax-table)
69
+ (setq local-abbrev-table puppet-mode-abbrev-table)
70
+ ;(make-local-variable 'indent-line-function)
71
+ ;(setq indent-line-function 'ruby-indent-line)
72
+ (make-local-variable 'require-final-newline)
73
+ (setq require-final-newline t)
74
+ (make-variable-buffer-local 'comment-start)
75
+ (setq comment-start "# ")
76
+ (make-variable-buffer-local 'comment-end)
77
+ (setq comment-end "")
78
+ (make-variable-buffer-local 'comment-column)
79
+ (setq comment-column puppet-comment-column)
80
+ (make-variable-buffer-local 'comment-start-skip)
81
+ (setq comment-start-skip "#+ *")
82
+ (setq indent-tabs-mode puppet-indent-tabs-mode)
83
+ (make-local-variable 'parse-sexp-ignore-comments)
84
+ (setq parse-sexp-ignore-comments t)
85
+ (make-local-variable 'paragraph-start)
86
+ (setq paragraph-start (concat "$\\|" page-delimiter))
87
+ (make-local-variable 'paragraph-separate)
88
+ (setq paragraph-separate paragraph-start)
89
+ (make-local-variable 'paragraph-ignore-fill-prefix)
90
+ (setq paragraph-ignore-fill-prefix t))
91
+
92
+ ;;;###autoload
93
+ (defun puppet-mode ()
94
+ "Major mode for editing puppet manifests.
95
+
96
+ The variable puppet-indent-level controls the amount of indentation.
97
+ \\{puppet-mode-map}"
98
+ (interactive)
99
+ (kill-all-local-variables)
100
+ (use-local-map puppet-mode-map)
101
+ (setq mode-name "Puppet")
102
+ (setq major-mode 'puppet-mode)
103
+ (puppet-mode-variables)
104
+
105
+ (run-hooks 'puppet-mode-hook))
106
+
107
+ (cond
108
+ ((featurep 'font-lock)
109
+ (or (boundp 'font-lock-variable-name-face)
110
+ (setq font-lock-variable-name-face font-lock-type-face))
111
+
112
+ (setq puppet-font-lock-syntactic-keywords
113
+ '(
114
+ ("\\(^\\|[=(,~?:;]\\|\\(^\\|\\s \\)\\(if\\|elsif\\|unless\\|while\\|until\\|when\\|and\\|or\\|&&\\|||\\)\\|g?sub!?\\|scan\\|split!?\\)\\s *\\(/\\)[^/\n\\\\]*\\(\\\\.[^/\n\\\\]*\\)*\\(/\\)"
115
+ (4 (7 . ?/))
116
+ (6 (7 . ?/)))
117
+ ("^\\(=\\)begin\\(\\s \\|$\\)" 1 (7 . nil))
118
+ ("^\\(=\\)end\\(\\s \\|$\\)" 1 (7 . nil))))
119
+
120
+ (cond ((featurep 'xemacs)
121
+ (put 'puppet-mode 'font-lock-defaults
122
+ '((puppet-font-lock-keywords)
123
+ nil nil nil
124
+ beginning-of-line
125
+ (font-lock-syntactic-keywords
126
+ . puppet-font-lock-syntactic-keywords))))
127
+ (t
128
+ (add-hook 'puppet-mode-hook
129
+ '(lambda ()
130
+ (make-local-variable 'font-lock-defaults)
131
+ (make-local-variable 'font-lock-keywords)
132
+ (make-local-variable 'font-lock-syntax-table)
133
+ (make-local-variable 'font-lock-syntactic-keywords)
134
+ (setq font-lock-defaults '((puppet-font-lock-keywords) nil nil))
135
+ (setq font-lock-keywords puppet-font-lock-keywords)
136
+ (setq font-lock-syntax-table puppet-font-lock-syntax-table)
137
+ (setq font-lock-syntactic-keywords puppet-font-lock-syntactic-keywords)))))
138
+
139
+ (defvar puppet-font-lock-syntax-table
140
+ (let* ((tbl (copy-syntax-table puppet-mode-syntax-table)))
141
+ (modify-syntax-entry ?_ "w" tbl)
142
+ tbl))
143
+
144
+ (defvar puppet-font-lock-keywords
145
+ (list
146
+ ;; defines
147
+ '("^\\s *\\(define\\|node\\|class\\)\\s +\\([^( \t\n]+\\)"
148
+ 2 font-lock-function-name-face)
149
+ ;; include
150
+ '("^\\s *include\\s +\\([^( \t\n]+\\)"
151
+ 1 font-lock-reference-face)
152
+ ;; keywords
153
+ (cons (concat
154
+ "\\b\\(\\("
155
+ (mapconcat
156
+ 'identity
157
+ '("case"
158
+ "class"
159
+ "default"
160
+ "define"
161
+ "false"
162
+ "import"
163
+ "include"
164
+ "inherits"
165
+ "node"
166
+ "true"
167
+ )
168
+ "\\|")
169
+ "\\)\\>\\)")
170
+ 1)
171
+ ;; variables
172
+ '("\\(^\\|[^_:.@$]\\|\\.\\.\\)\\b\\(nil\\|self\\|true\\|false\\)\\>"
173
+ 2 font-lock-variable-name-face)
174
+ ;; variables
175
+ '("\\(\\$\\([^a-zA-Z0-9 \n]\\|[0-9]\\)\\)\\W"
176
+ 1 font-lock-variable-name-face)
177
+ '("\\(\\$\\|@\\|@@\\)\\(\\w\\|_\\)+"
178
+ 0 font-lock-variable-name-face)
179
+ ;; usage of types
180
+ '("^\\s +\\([a-zA-Z-]+\\)\\s +{"
181
+ 1 font-lock-type-face)
182
+ ;; general delimited string
183
+ '("\\(^\\|[[ \t\n<+(,=]\\)\\(%[xrqQwW]?\\([^<[{(a-zA-Z0-9 \n]\\)[^\n\\\\]*\\(\\\\.[^\n\\\\]*\\)*\\(\\3\\)\\)"
184
+ (2 font-lock-string-face))
185
+ )
186
+ "*Additional expressions to highlight in puppet mode."))
187
+ )
188
+
189
+ (provide 'puppet-mode)
@@ -0,0 +1,17 @@
1
+ # These OIDs are all fake. No guarantees there won't be conflicts.
2
+ #
3
+ # $Id: puppet.schema 876 2006-02-08 01:06:30Z luke $
4
+
5
+ attributetype ( 1.1.2.10 NAME 'puppetclass'
6
+ DESC 'Puppet Node Class'
7
+ EQUALITY caseIgnoreIA5Match
8
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
9
+
10
+ attributetype ( 1.1.2.9 NAME 'parentnode'
11
+ DESC 'Puppet Parent Node'
12
+ EQUALITY caseIgnoreIA5Match
13
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
14
+
15
+ objectclass ( 1.1.1.1 NAME 'puppetClient' SUP ipHost AUXILIARY
16
+ DESC 'Puppet Client objectclass'
17
+ MAY ( puppetclass $ parentnode ))
@@ -7,9 +7,8 @@
7
7
  #
8
8
  # = Usage
9
9
  #
10
- # puppet [-h|--help] [-V|--version] [-d|--debug] [-v|--verbose]
11
- # [-l|--logfile <file>] [-p|--parse-only] <file>
12
- # [-c|--confdir <configuration directory>] [--vardir <var directory>]
10
+ # puppet_module [-h|--help] [-V|--version] [-d|--debug] [-v|--verbose]
11
+ # [-l|--logdest <file>]<file>
13
12
  #
14
13
  # = Description
15
14
  #
@@ -19,9 +18,11 @@
19
18
  #
20
19
  # = Options
21
20
  #
22
- # confdir::
23
- # The configuration root directory, where +puppetmasterd+ defaults to looking
24
- # for all of its configuration files. Defaults to +/etc/puppet+.
21
+ # Note that any configuration parameter that's valid in the configuration file
22
+ # is also a valid long argument. For example, 'ssldir' is a valid configuration
23
+ # parameter, so you can specify '--ssldir <directory>' as an argument.
24
+ #
25
+ # See the configuration file for the full list of acceptable parameters.
25
26
  #
26
27
  # debug::
27
28
  # Enable full debugging.
@@ -29,17 +30,10 @@
29
30
  # help::
30
31
  # Print this help message
31
32
  #
32
- # logfile::
33
+ # logdest::
33
34
  # Where to send messages. Choose between syslog, the console, and a log file.
34
35
  # Defaults to sending messages to the console.
35
36
  #
36
- # parse-only::
37
- # Just verify syntax, do not apply anything.
38
- #
39
- # vardir::
40
- # The variable-size directory, used for storing state. Defaults to
41
- # /var/puppet.
42
- #
43
37
  # verbose::
44
38
  # Print extra information.
45
39
  #
@@ -65,18 +59,19 @@ rescue LoadError
65
59
  $haveusage = false
66
60
  end
67
61
 
68
- result = GetoptLong.new(
69
- [ "--confdir", "-c", GetoptLong::REQUIRED_ARGUMENT ],
62
+ options = [
70
63
  [ "--debug", "-d", GetoptLong::NO_ARGUMENT ],
71
64
  [ "--help", "-h", GetoptLong::NO_ARGUMENT ],
72
65
  [ "--logdest", "-l", GetoptLong::REQUIRED_ARGUMENT ],
73
66
  [ "--verbose", "-v", GetoptLong::NO_ARGUMENT ],
74
- [ "--noop", "-n", GetoptLong::NO_ARGUMENT ],
75
67
  [ "--use-nodes", GetoptLong::NO_ARGUMENT ],
76
- [ "--parse-only", "-p", GetoptLong::NO_ARGUMENT ],
77
- [ "--vardir", GetoptLong::REQUIRED_ARGUMENT ],
78
68
  [ "--version", "-V", GetoptLong::NO_ARGUMENT ]
79
- )
69
+ ]
70
+
71
+ # Add all of the config parameters as valid options.
72
+ Puppet.config.addargs(options)
73
+
74
+ result = GetoptLong.new(*options)
80
75
 
81
76
  debug = false
82
77
  verbose = false
@@ -95,8 +90,6 @@ master = {
95
90
  begin
96
91
  result.each { |opt,arg|
97
92
  case opt
98
- when "--confdir"
99
- Puppet[:puppetconf] = arg
100
93
  when "--version"
101
94
  puts "%s" % Puppet.version
102
95
  exit
@@ -107,24 +100,20 @@ begin
107
100
  puts "No help available unless you have RDoc::usage installed"
108
101
  exit
109
102
  end
110
- when "--noop"
111
- Puppet[:noop] = true
112
103
  when "--use-nodes"
113
104
  master[:UseNodes] = true
114
105
  when "--verbose"
115
106
  verbose = true
116
- when "--parse-only"
117
- parseonly = true
118
107
  when "--debug"
119
108
  debug = true
120
109
  when "--logdest"
121
110
  begin
122
- Puppet[:logdest] = arg
111
+ Puppet::Log.newdestination arg
123
112
  rescue => detail
124
113
  $stderr.puts detail.to_s
125
114
  end
126
- when "--vardir"
127
- Puppet[:puppetvar] = arg
115
+ else
116
+ Puppet.config.handlearg(opt, arg)
128
117
  end
129
118
  }
130
119
  rescue GetoptLong::InvalidOption => detail
@@ -136,11 +125,21 @@ rescue GetoptLong::InvalidOption => detail
136
125
  end
137
126
 
138
127
  if debug
139
- Puppet[:loglevel] = :debug
128
+ Puppet::Log.level = :debug
129
+ Puppet::Log.newdestination :console
140
130
  elsif verbose
141
- Puppet[:loglevel] = :info
131
+ Puppet::Log.level = :info
132
+ Puppet::Log.newdestination :console
133
+ end
134
+
135
+ # Now parse the config
136
+ if Puppet[:config] and File.exists? Puppet[:config]
137
+ Puppet.config.parse(Puppet[:config])
142
138
  end
143
139
 
140
+ Puppet.genconfig
141
+ Puppet.genmanifest
142
+
144
143
  unless ARGV.length > 0
145
144
  $stderr.puts "You must pass a script to parse"
146
145
  exit(14)