chef 0.7.10

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of chef might be problematic. Click here for more details.

Files changed (120) hide show
  1. data/LICENSE +201 -0
  2. data/README.rdoc +135 -0
  3. data/bin/chef-client +26 -0
  4. data/bin/chef-solo +26 -0
  5. data/lib/chef.rb +49 -0
  6. data/lib/chef/application.rb +98 -0
  7. data/lib/chef/application/agent.rb +18 -0
  8. data/lib/chef/application/client.rb +209 -0
  9. data/lib/chef/application/indexer.rb +141 -0
  10. data/lib/chef/application/server.rb +18 -0
  11. data/lib/chef/application/solo.rb +214 -0
  12. data/lib/chef/client.rb +396 -0
  13. data/lib/chef/compile.rb +138 -0
  14. data/lib/chef/config.rb +141 -0
  15. data/lib/chef/cookbook.rb +144 -0
  16. data/lib/chef/cookbook/metadata.rb +407 -0
  17. data/lib/chef/cookbook/metadata/version.rb +87 -0
  18. data/lib/chef/cookbook_loader.rb +168 -0
  19. data/lib/chef/couchdb.rb +172 -0
  20. data/lib/chef/daemon.rb +170 -0
  21. data/lib/chef/exceptions.rb +36 -0
  22. data/lib/chef/file_cache.rb +205 -0
  23. data/lib/chef/log.rb +39 -0
  24. data/lib/chef/mixin/check_helper.rb +31 -0
  25. data/lib/chef/mixin/checksum.rb +37 -0
  26. data/lib/chef/mixin/command.rb +351 -0
  27. data/lib/chef/mixin/create_path.rb +56 -0
  28. data/lib/chef/mixin/deep_merge.rb +36 -0
  29. data/lib/chef/mixin/find_preferred_file.rb +99 -0
  30. data/lib/chef/mixin/from_file.rb +36 -0
  31. data/lib/chef/mixin/generate_url.rb +48 -0
  32. data/lib/chef/mixin/language.rb +79 -0
  33. data/lib/chef/mixin/params_validate.rb +197 -0
  34. data/lib/chef/mixin/template.rb +84 -0
  35. data/lib/chef/node.rb +406 -0
  36. data/lib/chef/node/attribute.rb +412 -0
  37. data/lib/chef/openid_registration.rb +181 -0
  38. data/lib/chef/platform.rb +253 -0
  39. data/lib/chef/provider.rb +40 -0
  40. data/lib/chef/provider/cron.rb +137 -0
  41. data/lib/chef/provider/directory.rb +72 -0
  42. data/lib/chef/provider/execute.rb +58 -0
  43. data/lib/chef/provider/file.rb +191 -0
  44. data/lib/chef/provider/group.rb +120 -0
  45. data/lib/chef/provider/group/groupadd.rb +92 -0
  46. data/lib/chef/provider/group/pw.rb +88 -0
  47. data/lib/chef/provider/http_request.rb +102 -0
  48. data/lib/chef/provider/ifconfig.rb +131 -0
  49. data/lib/chef/provider/link.rb +157 -0
  50. data/lib/chef/provider/mount.rb +121 -0
  51. data/lib/chef/provider/mount/mount.rb +208 -0
  52. data/lib/chef/provider/package.rb +160 -0
  53. data/lib/chef/provider/package/apt.rb +110 -0
  54. data/lib/chef/provider/package/dpkg.rb +113 -0
  55. data/lib/chef/provider/package/freebsd.rb +153 -0
  56. data/lib/chef/provider/package/macports.rb +105 -0
  57. data/lib/chef/provider/package/portage.rb +124 -0
  58. data/lib/chef/provider/package/rpm.rb +99 -0
  59. data/lib/chef/provider/package/rubygems.rb +130 -0
  60. data/lib/chef/provider/package/yum-dump.py +104 -0
  61. data/lib/chef/provider/package/yum.rb +175 -0
  62. data/lib/chef/provider/remote_directory.rb +126 -0
  63. data/lib/chef/provider/remote_file.rb +134 -0
  64. data/lib/chef/provider/route.rb +118 -0
  65. data/lib/chef/provider/ruby_block.rb +15 -0
  66. data/lib/chef/provider/script.rb +42 -0
  67. data/lib/chef/provider/service.rb +129 -0
  68. data/lib/chef/provider/service/debian.rb +64 -0
  69. data/lib/chef/provider/service/freebsd.rb +157 -0
  70. data/lib/chef/provider/service/gentoo.rb +54 -0
  71. data/lib/chef/provider/service/init.rb +126 -0
  72. data/lib/chef/provider/service/redhat.rb +62 -0
  73. data/lib/chef/provider/template.rb +141 -0
  74. data/lib/chef/provider/user.rb +170 -0
  75. data/lib/chef/provider/user/pw.rb +113 -0
  76. data/lib/chef/provider/user/useradd.rb +107 -0
  77. data/lib/chef/queue.rb +145 -0
  78. data/lib/chef/recipe.rb +210 -0
  79. data/lib/chef/resource.rb +256 -0
  80. data/lib/chef/resource/apt_package.rb +34 -0
  81. data/lib/chef/resource/bash.rb +33 -0
  82. data/lib/chef/resource/cron.rb +143 -0
  83. data/lib/chef/resource/csh.rb +33 -0
  84. data/lib/chef/resource/directory.rb +76 -0
  85. data/lib/chef/resource/dpkg_package.rb +34 -0
  86. data/lib/chef/resource/execute.rb +127 -0
  87. data/lib/chef/resource/file.rb +84 -0
  88. data/lib/chef/resource/gem_package.rb +41 -0
  89. data/lib/chef/resource/group.rb +68 -0
  90. data/lib/chef/resource/http_request.rb +52 -0
  91. data/lib/chef/resource/ifconfig.rb +134 -0
  92. data/lib/chef/resource/link.rb +78 -0
  93. data/lib/chef/resource/macports_package.rb +29 -0
  94. data/lib/chef/resource/mount.rb +135 -0
  95. data/lib/chef/resource/package.rb +80 -0
  96. data/lib/chef/resource/perl.rb +33 -0
  97. data/lib/chef/resource/portage_package.rb +33 -0
  98. data/lib/chef/resource/python.rb +33 -0
  99. data/lib/chef/resource/remote_directory.rb +91 -0
  100. data/lib/chef/resource/remote_file.rb +60 -0
  101. data/lib/chef/resource/route.rb +135 -0
  102. data/lib/chef/resource/ruby.rb +33 -0
  103. data/lib/chef/resource/ruby_block.rb +20 -0
  104. data/lib/chef/resource/script.rb +51 -0
  105. data/lib/chef/resource/service.rb +134 -0
  106. data/lib/chef/resource/template.rb +60 -0
  107. data/lib/chef/resource/user.rb +98 -0
  108. data/lib/chef/resource_collection.rb +176 -0
  109. data/lib/chef/resource_definition.rb +67 -0
  110. data/lib/chef/rest.rb +238 -0
  111. data/lib/chef/role.rb +231 -0
  112. data/lib/chef/run_list.rb +156 -0
  113. data/lib/chef/runner.rb +123 -0
  114. data/lib/chef/search.rb +88 -0
  115. data/lib/chef/search/result.rb +64 -0
  116. data/lib/chef/search_index.rb +77 -0
  117. data/lib/chef/tasks/chef_repo.rake +345 -0
  118. data/lib/chef/util/file_edit.rb +125 -0
  119. data/lib/chef/util/fileedit.rb +121 -0
  120. metadata +262 -0
@@ -0,0 +1,52 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Copyright:: Copyright (c) 2008 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/resource'
20
+
21
+ class Chef
22
+ class Resource
23
+ class HttpRequest < Chef::Resource
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :http_request
28
+ @message = name
29
+ @url = nil
30
+ @action = :get
31
+ @allowed_actions.push(:get, :put, :post, :delete, :head, :options)
32
+ end
33
+
34
+ def url(args=nil)
35
+ set_or_return(
36
+ :url,
37
+ args,
38
+ :kind_of => String
39
+ )
40
+ end
41
+
42
+ def message(args=nil)
43
+ set_or_return(
44
+ :message,
45
+ args,
46
+ :kind_of => Object
47
+ )
48
+ end
49
+
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,134 @@
1
+ #
2
+ # Author:: Jason K. Jackson (jason.jackson@monster.com)
3
+ # Copyright:: Copyright (c) 2009 Jason K. Jackson
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/resource'
20
+
21
+ class Chef
22
+ class Resource
23
+ class Ifconfig < Chef::Resource
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :ifconfig
28
+ @target = name
29
+ @action = :add
30
+ @allowed_actions.push(:add, :delete)
31
+ @hwaddr = nil
32
+ @mask = nil
33
+ @inet_addr = nil
34
+ @bcast = nil
35
+ @mtu = nil
36
+ @metric = nil
37
+ @device = nil
38
+ @onboot = nil
39
+ @network = nil
40
+ @bootproto = nil
41
+ end
42
+
43
+ def target(arg=nil)
44
+ set_or_return(
45
+ :target,
46
+ arg,
47
+ :kind_of => String
48
+ )
49
+ end
50
+
51
+ def device(arg=nil)
52
+ set_or_return(
53
+ :device,
54
+ arg,
55
+ :kind_of => String
56
+ )
57
+ end
58
+
59
+ def hwaddr(arg=nil)
60
+ set_or_return(
61
+ :hwaddr,
62
+ arg,
63
+ :kind_of => String
64
+ )
65
+ end
66
+
67
+ def inet_addr(arg=nil)
68
+ set_or_return(
69
+ :inet_addr,
70
+ arg,
71
+ :kind_of => String
72
+ )
73
+ end
74
+
75
+ def bcast(arg=nil)
76
+ set_or_return(
77
+ :bcast,
78
+ arg,
79
+ :kind_of => String
80
+ )
81
+ end
82
+
83
+ def mask(arg=nil)
84
+ set_or_return(
85
+ :mask,
86
+ arg,
87
+ :kind_of => String
88
+ )
89
+ end
90
+
91
+ def mtu(arg=nil)
92
+ set_or_return(
93
+ :mtu,
94
+ arg,
95
+ :kind_of => String
96
+ )
97
+ end
98
+
99
+ def metric(arg=nil)
100
+ set_or_return(
101
+ :metric,
102
+ arg,
103
+ :kind_of => String
104
+ )
105
+ end
106
+
107
+ def onboot(arg=nil)
108
+ set_or_return(
109
+ :onboot,
110
+ arg,
111
+ :kind_of => String
112
+ )
113
+ end
114
+
115
+ def network(arg=nil)
116
+ set_or_return(
117
+ :network,
118
+ arg,
119
+ :kind_of => String
120
+ )
121
+ end
122
+
123
+ def bootproto(arg=nil)
124
+ set_or_return(
125
+ :bootproto,
126
+ arg,
127
+ :kind_of => String
128
+ )
129
+ end
130
+ end
131
+ end
132
+ end
133
+
134
+
@@ -0,0 +1,78 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Copyright:: Copyright (c) 2008 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/resource'
20
+
21
+ class Chef
22
+ class Resource
23
+ class Link < Chef::Resource
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :link
28
+ @to = nil
29
+ @action = :create
30
+ @link_type = :symbolic
31
+ @target_file = name
32
+ @allowed_actions.push(:create, :delete)
33
+ end
34
+
35
+ def to(arg=nil)
36
+ set_or_return(
37
+ :source_file,
38
+ arg,
39
+ :kind_of => String
40
+ )
41
+ end
42
+
43
+ def target_file(arg=nil)
44
+ set_or_return(
45
+ :target_file,
46
+ arg,
47
+ :kind_of => String
48
+ )
49
+ end
50
+
51
+ def link_type(arg=nil)
52
+ real_arg = arg.kind_of?(String) ? arg.to_sym : arg
53
+ set_or_return(
54
+ :link_type,
55
+ real_arg,
56
+ :equal_to => [ :symbolic, :hard ]
57
+ )
58
+ end
59
+
60
+ def group(arg=nil)
61
+ set_or_return(
62
+ :group,
63
+ arg,
64
+ :regex => [ /^([a-z]|[A-Z]|[0-9]|_|-)+$/, /^\d+$/ ]
65
+ )
66
+ end
67
+
68
+ def owner(arg=nil)
69
+ set_or_return(
70
+ :owner,
71
+ arg,
72
+ :regex => [ /^([a-z]|[A-Z]|[0-9]|_|-)+$/, /^\d+$/ ]
73
+ )
74
+ end
75
+
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,29 @@
1
+ #
2
+ # Author:: David Balatero (<dbalatero@gmail.com>)
3
+ # Copyright:: Copyright (c) 2009 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ class Chef
20
+ class Resource
21
+ class MacportsPackage < Chef::Resource::Package
22
+ def initialize(name, collection = nil, node = nil)
23
+ super(name, collection, node)
24
+ @resource_name = :macports_package
25
+ @provider = Chef::Provider::Package::Macports
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,135 @@
1
+ #
2
+ # Author:: Joshua Timberman (<joshua@opscode.com>)
3
+ # Copyright:: Copyright (c) 2009 Opscode, Inc
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/resource'
20
+
21
+ class Chef
22
+ class Resource
23
+ class Mount < Chef::Resource
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :mount
28
+ @mount_point = name
29
+ @device = nil
30
+ @device_type = :device
31
+ @fstype = nil
32
+ @options = ["defaults"]
33
+ @dump = 0
34
+ @pass = 2
35
+ @mounted = false
36
+ @enabled = false
37
+ @action = :mount
38
+ @supports = { :remount => false }
39
+ @allowed_actions.push(:mount, :umount, :remount, :enable, :disable)
40
+ end
41
+
42
+ def mount_point(arg=nil)
43
+ set_or_return(
44
+ :mount_point,
45
+ arg,
46
+ :kind_of => [ String ]
47
+ )
48
+ end
49
+
50
+ def device(arg=nil)
51
+ set_or_return(
52
+ :device,
53
+ arg,
54
+ :kind_of => [ String ]
55
+ )
56
+ end
57
+
58
+ def device_type(arg=nil)
59
+ real_arg = arg.kind_of?(String) ? arg.to_sym : arg
60
+ set_or_return(
61
+ :device_type,
62
+ real_arg,
63
+ :equal_to => [ :device, :label, :uuid ]
64
+ )
65
+ end
66
+
67
+ def fstype(arg=nil)
68
+ set_or_return(
69
+ :fstype,
70
+ arg,
71
+ :kind_of => [ String ]
72
+ )
73
+ end
74
+
75
+ def options(arg=nil)
76
+ if arg.is_a?(String)
77
+ arg.gsub!(/,/, ' ')
78
+ converted_arg = arg.split(/ /)
79
+ else
80
+ converted_arg = arg
81
+ end
82
+ set_or_return(
83
+ :options,
84
+ converted_arg,
85
+ :kind_of => [ Array ]
86
+ )
87
+ end
88
+
89
+ def dump(arg=nil)
90
+ set_or_return(
91
+ :dump,
92
+ arg,
93
+ :kind_of => [ Integer, FalseClass ]
94
+ )
95
+ end
96
+
97
+ def pass(arg=nil)
98
+ set_or_return(
99
+ :pass,
100
+ arg,
101
+ :kind_of => [ Integer, FalseClass ]
102
+ )
103
+ end
104
+
105
+ def mounted(arg=nil)
106
+ set_or_return(
107
+ :mounted,
108
+ arg,
109
+ :kind_of => [ TrueClass, FalseClass ]
110
+ )
111
+ end
112
+
113
+ def enabled(arg=nil)
114
+ set_or_return(
115
+ :enabled,
116
+ arg,
117
+ :kind_of => [ TrueClass, FalseClass ]
118
+ )
119
+ end
120
+
121
+ def supports(args={})
122
+ if args.is_a? Array
123
+ args.each { |arg| @supports[arg] = true }
124
+ elsif args.any?
125
+ @supports = args
126
+ else
127
+ @supports
128
+ end
129
+ end
130
+
131
+ end
132
+ end
133
+ end
134
+
135
+
@@ -0,0 +1,80 @@
1
+ #
2
+ # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Copyright:: Copyright (c) 2008 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/resource'
20
+
21
+ class Chef
22
+ class Resource
23
+ class Package < Chef::Resource
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :package
28
+ @package_name = name
29
+ @version = nil
30
+ @candidate_version = nil
31
+ @response_file = nil
32
+ @source = nil
33
+ @action = "install"
34
+ @options = nil
35
+ @allowed_actions.push(:install, :upgrade, :remove, :purge)
36
+ end
37
+
38
+ def package_name(arg=nil)
39
+ set_or_return(
40
+ :package_name,
41
+ arg,
42
+ :kind_of => [ String ]
43
+ )
44
+ end
45
+
46
+ def version(arg=nil)
47
+ set_or_return(
48
+ :version,
49
+ arg,
50
+ :kind_of => [ String ]
51
+ )
52
+ end
53
+
54
+ def response_file(arg=nil)
55
+ set_or_return(
56
+ :response_file,
57
+ arg,
58
+ :kind_of => [ String ]
59
+ )
60
+ end
61
+
62
+ def source(arg=nil)
63
+ set_or_return(
64
+ :source,
65
+ arg,
66
+ :kind_of => [ String ]
67
+ )
68
+ end
69
+
70
+ def options(arg=nil)
71
+ set_or_return(
72
+ :options,
73
+ arg,
74
+ :kind_of => [ String ]
75
+ )
76
+ end
77
+
78
+ end
79
+ end
80
+ end