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 Csh < Chef::Resource::Script
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :csh
28
+ @interpreter = "csh"
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,76 @@
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 Directory < Chef::Resource
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :directory
28
+ @path = name
29
+ @action = :create
30
+ @recursive = false
31
+ @allowed_actions.push(:create, :delete)
32
+ end
33
+
34
+ def recursive(arg=nil)
35
+ set_or_return(
36
+ :recursive,
37
+ arg,
38
+ :kind_of => [ TrueClass, FalseClass ]
39
+ )
40
+ end
41
+
42
+ def group(arg=nil)
43
+ set_or_return(
44
+ :group,
45
+ arg,
46
+ :regex => [ /^([a-z]|[A-Z]|[0-9]|_|-)+$/, /^\d+$/ ]
47
+ )
48
+ end
49
+
50
+ def mode(arg=nil)
51
+ set_or_return(
52
+ :mode,
53
+ arg,
54
+ :regex => /^\d{3,4}$/
55
+ )
56
+ end
57
+
58
+ def owner(arg=nil)
59
+ set_or_return(
60
+ :owner,
61
+ arg,
62
+ :regex => [ /^([a-z]|[A-Z]|[0-9]|_|-)+$/, /^\d+$/ ]
63
+ )
64
+ end
65
+
66
+ def path(arg=nil)
67
+ set_or_return(
68
+ :path,
69
+ arg,
70
+ :kind_of => String
71
+ )
72
+ end
73
+
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,34 @@
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
+ require 'chef/provider/package/dpkg'
21
+
22
+ class Chef
23
+ class Resource
24
+ class DpkgPackage < Chef::Resource::Package
25
+
26
+ def initialize(name, collection=nil, node=nil)
27
+ super(name, collection, node)
28
+ @resource_name = :dpkg_package
29
+ @provider = Chef::Provider::Package::Dpkg
30
+ end
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,127 @@
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 Execute < Chef::Resource
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :execute
28
+ @command = name
29
+ @backup = 5
30
+ @action = "run"
31
+ @creates = nil
32
+ @cwd = nil
33
+ @environment = nil
34
+ @group = nil
35
+ @path = nil
36
+ @returns = 0
37
+ @timeout = nil
38
+ @user = nil
39
+ @allowed_actions.push(:run)
40
+ @umask = nil
41
+ end
42
+
43
+ def umask(arg=nil)
44
+ set_or_return(
45
+ :umask,
46
+ arg,
47
+ :kind_of => [ String, Integer ]
48
+ )
49
+ end
50
+
51
+ def command(arg=nil)
52
+ set_or_return(
53
+ :command,
54
+ arg,
55
+ :kind_of => [ String ]
56
+ )
57
+ end
58
+
59
+ def creates(arg=nil)
60
+ set_or_return(
61
+ :creates,
62
+ arg,
63
+ :kind_of => [ String ]
64
+ )
65
+ end
66
+
67
+ def cwd(arg=nil)
68
+ set_or_return(
69
+ :cwd,
70
+ arg,
71
+ :kind_of => [ String ]
72
+ )
73
+ end
74
+
75
+ def environment(arg=nil)
76
+ set_or_return(
77
+ :environment,
78
+ arg,
79
+ :kind_of => [ Hash ]
80
+ )
81
+ end
82
+
83
+ def group(arg=nil)
84
+ set_or_return(
85
+ :group,
86
+ arg,
87
+ :kind_of => [ String, Integer ]
88
+ )
89
+ end
90
+
91
+ def path(arg=nil)
92
+ set_or_return(
93
+ :path,
94
+ arg,
95
+ :kind_of => [ Array ]
96
+ )
97
+ end
98
+
99
+ def returns(arg=nil)
100
+ set_or_return(
101
+ :returns,
102
+ arg,
103
+ :kind_of => [ Integer ]
104
+ )
105
+ end
106
+
107
+ def timeout(arg=nil)
108
+ set_or_return(
109
+ :timeout,
110
+ arg,
111
+ :kind_of => [ Integer ]
112
+ )
113
+ end
114
+
115
+ def user(arg=nil)
116
+ set_or_return(
117
+ :user,
118
+ arg,
119
+ :kind_of => [ String, Integer ]
120
+ )
121
+ end
122
+
123
+
124
+
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,84 @@
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 File < Chef::Resource
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :file
28
+ @path = name
29
+ @backup = 5
30
+ @action = "create"
31
+ @allowed_actions.push(:create, :delete, :touch, :create_if_missing)
32
+ end
33
+
34
+ def backup(arg=nil)
35
+ set_or_return(
36
+ :backup,
37
+ arg,
38
+ :kind_of => [ Integer, FalseClass ]
39
+ )
40
+ end
41
+
42
+ def checksum(arg=nil)
43
+ set_or_return(
44
+ :checksum,
45
+ arg,
46
+ :regex => /^[a-zA-Z0-9]{64}$/
47
+ )
48
+ end
49
+
50
+ def group(arg=nil)
51
+ set_or_return(
52
+ :group,
53
+ arg,
54
+ :regex => [ /^([a-z]|[A-Z]|[0-9]|_|-)+$/, /^\d+$/ ]
55
+ )
56
+ end
57
+
58
+ def mode(arg=nil)
59
+ set_or_return(
60
+ :mode,
61
+ arg,
62
+ :regex => /^0?\d{3,4}$/
63
+ )
64
+ end
65
+
66
+ def owner(arg=nil)
67
+ set_or_return(
68
+ :owner,
69
+ arg,
70
+ :regex => [ /^([a-z]|[A-Z]|[0-9]|_|-)+$/, /^\d+$/ ]
71
+ )
72
+ end
73
+
74
+ def path(arg=nil)
75
+ set_or_return(
76
+ :path,
77
+ arg,
78
+ :kind_of => String
79
+ )
80
+ end
81
+
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,41 @@
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 GemPackage < Chef::Resource::Package
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :gem_package
28
+ @provider = Chef::Provider::Package::Rubygems
29
+ end
30
+
31
+ # Sets a custom gem_binary to run for gem commands.
32
+ def gem_binary(arg=nil)
33
+ set_or_return(
34
+ :gem_binary,
35
+ arg,
36
+ :kind_of => [ String ]
37
+ )
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,68 @@
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
+ class Chef
20
+ class Resource
21
+ class Group < Chef::Resource
22
+
23
+ def initialize(name, collection=nil, node=nil)
24
+ super(name, collection, node)
25
+ @resource_name = :group
26
+ @group_name = name
27
+ @gid = nil
28
+ @members = []
29
+ @action = :create
30
+ @append = false
31
+ @allowed_actions.push(:create, :remove, :modify, :manage)
32
+ end
33
+
34
+ def group_name(arg=nil)
35
+ set_or_return(
36
+ :group_name,
37
+ arg,
38
+ :kind_of => [ String ]
39
+ )
40
+ end
41
+
42
+ def gid(arg=nil)
43
+ set_or_return(
44
+ :gid,
45
+ arg,
46
+ :kind_of => [ Integer ]
47
+ )
48
+ end
49
+
50
+ def members(arg=nil)
51
+ converted_members = arg.is_a?(String) ? [].push(arg) : arg
52
+ set_or_return(
53
+ :members,
54
+ converted_members,
55
+ :kind_of => [ Array ]
56
+ )
57
+ end
58
+
59
+ def append(arg=nil)
60
+ set_or_return(
61
+ :append,
62
+ arg,
63
+ :kind_of => [ TrueClass, FalseClass ]
64
+ )
65
+ end
66
+ end
67
+ end
68
+ end