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,33 @@
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/script'
20
+
21
+ class Chef
22
+ class Resource
23
+ class Perl < Chef::Resource::Script
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :perl
28
+ @interpreter = "perl"
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
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/package'
20
+
21
+ class Chef
22
+ class Resource
23
+ class PortagePackage < Chef::Resource::Package
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :portage_package
28
+ @provider = Chef::Provider::Package::Portage
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
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/script'
20
+
21
+ class Chef
22
+ class Resource
23
+ class Python < Chef::Resource::Script
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :python
28
+ @interpreter = "python"
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,91 @@
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/directory'
20
+
21
+ class Chef
22
+ class Resource
23
+ class RemoteDirectory < Chef::Resource::Directory
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :remote_directory
28
+ @path = name
29
+ @source = ::File.basename(name)
30
+ @delete = false
31
+ @action = :create
32
+ @recursive = true
33
+ @files_backup = 5
34
+ @files_owner = nil
35
+ @files_group = nil
36
+ @files_mode = 0644
37
+ @allowed_actions.push(:create, :delete)
38
+ @cookbook = nil
39
+ end
40
+
41
+ def source(args=nil)
42
+ set_or_return(
43
+ :source,
44
+ args,
45
+ :kind_of => String
46
+ )
47
+ end
48
+
49
+ def files_backup(arg=nil)
50
+ set_or_return(
51
+ :files_backup,
52
+ arg,
53
+ :kind_of => [ Integer, FalseClass ]
54
+ )
55
+ end
56
+
57
+ def files_group(arg=nil)
58
+ set_or_return(
59
+ :files_group,
60
+ arg,
61
+ :regex => [ /^([a-z]|[A-Z]|[0-9]|_|-)+$/, /^\d+$/ ]
62
+ )
63
+ end
64
+
65
+ def files_mode(arg=nil)
66
+ set_or_return(
67
+ :files_mode,
68
+ arg,
69
+ :regex => /^\d{3,4}$/
70
+ )
71
+ end
72
+
73
+ def files_owner(arg=nil)
74
+ set_or_return(
75
+ :files_owner,
76
+ arg,
77
+ :regex => [ /^([a-z]|[A-Z]|[0-9]|_|-)+$/, /^\d+$/ ]
78
+ )
79
+ end
80
+
81
+ def cookbook(args=nil)
82
+ set_or_return(
83
+ :cookbook,
84
+ args,
85
+ :kind_of => String
86
+ )
87
+ end
88
+
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,60 @@
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/file'
20
+
21
+ class Chef
22
+ class Resource
23
+ class RemoteFile < Chef::Resource::File
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :remote_file
28
+ @action = "create"
29
+ @source = ::File.basename(name)
30
+ @cookbook = nil
31
+ end
32
+
33
+ def source(args=nil)
34
+ set_or_return(
35
+ :source,
36
+ args,
37
+ :kind_of => String
38
+ )
39
+ end
40
+
41
+ def cookbook(args=nil)
42
+ set_or_return(
43
+ :cookbook,
44
+ args,
45
+ :kind_of => String
46
+ )
47
+ end
48
+
49
+ def checksum(args=nil)
50
+ set_or_return(
51
+ :checksum,
52
+ args,
53
+ :kind_of => String
54
+ )
55
+ end
56
+
57
+
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,135 @@
1
+ #
2
+ # Author:: Bryan McLellan (btm@loftninjas.org)
3
+ # Copyright:: Copyright (c) 2009 Bryan McLellan
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 Route < Chef::Resource
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :route
28
+ @target = name
29
+ @action = :add
30
+ @allowed_actions.push(:add, :delete)
31
+ @netmask = nil
32
+ @gateway = nil
33
+ @metric = nil
34
+ @device = nil
35
+ @route_type = :host
36
+ @networking = nil
37
+ @networking_ipv6 = nil
38
+ @hostname = nil
39
+ @domainname = nil
40
+ @domain = nil
41
+ end
42
+
43
+ def networking(arg=nil)
44
+ set_or_return(
45
+ :networking,
46
+ arg,
47
+ :kind_of => String
48
+ )
49
+ end
50
+
51
+ def networking_ipv6(arg=nil)
52
+ set_or_return(
53
+ :networking_ipv6,
54
+ arg,
55
+ :kind_of => String
56
+ )
57
+ end
58
+
59
+ def hostname(arg=nil)
60
+ set_or_return(
61
+ :hostname,
62
+ arg,
63
+ :kind_of => String
64
+ )
65
+ end
66
+
67
+ def domainname(arg=nil)
68
+ set_or_return(
69
+ :domainname,
70
+ arg,
71
+ :kind_of => String
72
+ )
73
+ end
74
+
75
+ def domain(arg=nil)
76
+ set_or_return(
77
+ :domain,
78
+ arg,
79
+ :kind_of => String
80
+ )
81
+ end
82
+
83
+ def target(arg=nil)
84
+ set_or_return(
85
+ :target,
86
+ arg,
87
+ :kind_of => String
88
+ )
89
+ end
90
+
91
+ def netmask(arg=nil)
92
+ set_or_return(
93
+ :netmask,
94
+ arg,
95
+ :kind_of => String
96
+ )
97
+ end
98
+
99
+ def gateway(arg=nil)
100
+ set_or_return(
101
+ :gateway,
102
+ arg,
103
+ :kind_of => String
104
+ )
105
+ end
106
+
107
+ def metric(arg=nil)
108
+ set_or_return(
109
+ :metric,
110
+ arg,
111
+ :kind_of => Integer
112
+ )
113
+ end
114
+
115
+ def device(arg=nil)
116
+ set_or_return(
117
+ :device,
118
+ arg,
119
+ :kind_of => String
120
+ )
121
+ end
122
+
123
+ def route_type(arg=nil)
124
+ real_arg = arg.kind_of?(String) ? arg.to_sym : arg
125
+ set_or_return(
126
+ :route_type,
127
+ real_arg,
128
+ :equal_to => [ :host, :net ]
129
+ )
130
+ end
131
+ end
132
+ end
133
+ end
134
+
135
+
@@ -0,0 +1,33 @@
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/script'
20
+
21
+ class Chef
22
+ class Resource
23
+ class Ruby < Chef::Resource::Script
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :ruby
28
+ @interpreter = "ruby"
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,20 @@
1
+ class Chef
2
+ class Resource
3
+ class RubyBlock < Chef::Resource
4
+ def initialize(name, collection=nil, node=nil)
5
+ super(name, collection, node)
6
+ @resource_name = :ruby_block
7
+ @action = :create
8
+ @allowed_actions.push(:create)
9
+ end
10
+
11
+ def block(&block)
12
+ if block
13
+ @block = block
14
+ else
15
+ @block
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end