runa-chef 0.8.0.1
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.
- data/LICENSE +201 -0
- data/README.rdoc +136 -0
- data/bin/chef-client +26 -0
- data/bin/chef-solo +26 -0
- data/bin/knife +27 -0
- data/bin/shef +45 -0
- data/distro/README +2 -0
- data/distro/common/man/man1/chef-indexer.1 +42 -0
- data/distro/common/man/man1/chef-server.1 +108 -0
- data/distro/common/man/man8/chef-client.8 +61 -0
- data/distro/common/man/man8/chef-solo.8 +58 -0
- data/distro/common/man/man8/knife.8 +359 -0
- data/distro/debian/etc/init.d/chef-client +175 -0
- data/distro/debian/etc/init.d/chef-indexer +175 -0
- data/distro/debian/etc/init.d/chef-server +120 -0
- data/distro/redhat/etc/init.d/chef-client +78 -0
- data/distro/redhat/etc/init.d/chef-indexer +76 -0
- data/distro/redhat/etc/init.d/chef-server +78 -0
- data/distro/redhat/etc/sysconfig/chef-client +10 -0
- data/distro/redhat/etc/sysconfig/chef-indexer +8 -0
- data/distro/redhat/etc/sysconfig/chef-server +10 -0
- data/distro/suse/etc/init.d/chef-client +121 -0
- data/lib/chef.rb +49 -0
- data/lib/chef/api_client.rb +269 -0
- data/lib/chef/application.rb +98 -0
- data/lib/chef/application/agent.rb +18 -0
- data/lib/chef/application/client.rb +214 -0
- data/lib/chef/application/knife.rb +138 -0
- data/lib/chef/application/server.rb +19 -0
- data/lib/chef/application/solo.rb +214 -0
- data/lib/chef/cache.rb +61 -0
- data/lib/chef/cache/checksum.rb +70 -0
- data/lib/chef/certificate.rb +154 -0
- data/lib/chef/client.rb +323 -0
- data/lib/chef/compile.rb +158 -0
- data/lib/chef/config.rb +195 -0
- data/lib/chef/cookbook.rb +198 -0
- data/lib/chef/cookbook/metadata.rb +487 -0
- data/lib/chef/cookbook/metadata/version.rb +87 -0
- data/lib/chef/cookbook_loader.rb +180 -0
- data/lib/chef/couchdb.rb +273 -0
- data/lib/chef/daemon.rb +170 -0
- data/lib/chef/data_bag.rb +216 -0
- data/lib/chef/data_bag_item.rb +227 -0
- data/lib/chef/exceptions.rb +39 -0
- data/lib/chef/file_cache.rb +205 -0
- data/lib/chef/knife.rb +300 -0
- data/lib/chef/knife/client_bulk_delete.rb +41 -0
- data/lib/chef/knife/client_create.rb +55 -0
- data/lib/chef/knife/client_delete.rb +37 -0
- data/lib/chef/knife/client_edit.rb +37 -0
- data/lib/chef/knife/client_list.rb +40 -0
- data/lib/chef/knife/client_reregister.rb +48 -0
- data/lib/chef/knife/client_show.rb +42 -0
- data/lib/chef/knife/configure.rb +84 -0
- data/lib/chef/knife/cookbook_bulk_delete.rb +47 -0
- data/lib/chef/knife/cookbook_delete.rb +41 -0
- data/lib/chef/knife/cookbook_download.rb +57 -0
- data/lib/chef/knife/cookbook_list.rb +41 -0
- data/lib/chef/knife/cookbook_metadata.rb +87 -0
- data/lib/chef/knife/cookbook_show.rb +75 -0
- data/lib/chef/knife/cookbook_upload.rb +173 -0
- data/lib/chef/knife/data_bag_create.rb +43 -0
- data/lib/chef/knife/data_bag_delete.rb +43 -0
- data/lib/chef/knife/data_bag_edit.rb +49 -0
- data/lib/chef/knife/data_bag_list.rb +42 -0
- data/lib/chef/knife/data_bag_show.rb +40 -0
- data/lib/chef/knife/ec2_instance_data.rb +46 -0
- data/lib/chef/knife/node_bulk_delete.rb +44 -0
- data/lib/chef/knife/node_create.rb +39 -0
- data/lib/chef/knife/node_delete.rb +36 -0
- data/lib/chef/knife/node_edit.rb +36 -0
- data/lib/chef/knife/node_from_file.rb +42 -0
- data/lib/chef/knife/node_list.rb +41 -0
- data/lib/chef/knife/node_run_list_add.rb +64 -0
- data/lib/chef/knife/node_run_list_remove.rb +45 -0
- data/lib/chef/knife/node_show.rb +46 -0
- data/lib/chef/knife/role_bulk_delete.rb +45 -0
- data/lib/chef/knife/role_create.rb +44 -0
- data/lib/chef/knife/role_delete.rb +36 -0
- data/lib/chef/knife/role_edit.rb +37 -0
- data/lib/chef/knife/role_from_file.rb +46 -0
- data/lib/chef/knife/role_list.rb +40 -0
- data/lib/chef/knife/role_show.rb +43 -0
- data/lib/chef/knife/search.rb +94 -0
- data/lib/chef/log.rb +39 -0
- data/lib/chef/mixin/check_helper.rb +31 -0
- data/lib/chef/mixin/checksum.rb +32 -0
- data/lib/chef/mixin/command.rb +390 -0
- data/lib/chef/mixin/convert_to_class_name.rb +57 -0
- data/lib/chef/mixin/create_path.rb +56 -0
- data/lib/chef/mixin/deep_merge.rb +33 -0
- data/lib/chef/mixin/find_preferred_file.rb +92 -0
- data/lib/chef/mixin/from_file.rb +50 -0
- data/lib/chef/mixin/generate_url.rb +58 -0
- data/lib/chef/mixin/language.rb +107 -0
- data/lib/chef/mixin/language_include_attribute.rb +56 -0
- data/lib/chef/mixin/language_include_recipe.rb +53 -0
- data/lib/chef/mixin/params_validate.rb +197 -0
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +79 -0
- data/lib/chef/mixin/template.rb +94 -0
- data/lib/chef/nanite.rb +100 -0
- data/lib/chef/node.rb +463 -0
- data/lib/chef/node/attribute.rb +412 -0
- data/lib/chef/openid_registration.rb +181 -0
- data/lib/chef/platform.rb +268 -0
- data/lib/chef/provider.rb +101 -0
- data/lib/chef/provider/breakpoint.rb +36 -0
- data/lib/chef/provider/cron.rb +184 -0
- data/lib/chef/provider/deploy.rb +314 -0
- data/lib/chef/provider/deploy/revision.rb +70 -0
- data/lib/chef/provider/deploy/timestamped.rb +33 -0
- data/lib/chef/provider/directory.rb +72 -0
- data/lib/chef/provider/erl_call.rb +72 -0
- data/lib/chef/provider/execute.rb +58 -0
- data/lib/chef/provider/file.rb +195 -0
- data/lib/chef/provider/git.rb +203 -0
- data/lib/chef/provider/group.rb +120 -0
- data/lib/chef/provider/group/dscl.rb +128 -0
- data/lib/chef/provider/group/gpasswd.rb +50 -0
- data/lib/chef/provider/group/groupadd.rb +78 -0
- data/lib/chef/provider/group/pw.rb +88 -0
- data/lib/chef/provider/group/usermod.rb +57 -0
- data/lib/chef/provider/http_request.rb +106 -0
- data/lib/chef/provider/ifconfig.rb +131 -0
- data/lib/chef/provider/link.rb +157 -0
- data/lib/chef/provider/mdadm.rb +88 -0
- data/lib/chef/provider/mount.rb +117 -0
- data/lib/chef/provider/mount/mount.rb +208 -0
- data/lib/chef/provider/package.rb +160 -0
- data/lib/chef/provider/package/apt.rb +110 -0
- data/lib/chef/provider/package/dpkg.rb +109 -0
- data/lib/chef/provider/package/easy_install.rb +106 -0
- data/lib/chef/provider/package/freebsd.rb +153 -0
- data/lib/chef/provider/package/macports.rb +105 -0
- data/lib/chef/provider/package/portage.rb +124 -0
- data/lib/chef/provider/package/rpm.rb +99 -0
- data/lib/chef/provider/package/rubygems.rb +136 -0
- data/lib/chef/provider/package/yum-dump.py +125 -0
- data/lib/chef/provider/package/yum.rb +175 -0
- data/lib/chef/provider/package/zypper.rb +132 -0
- data/lib/chef/provider/remote_directory.rb +126 -0
- data/lib/chef/provider/remote_file.rb +141 -0
- data/lib/chef/provider/route.rb +118 -0
- data/lib/chef/provider/ruby_block.rb +33 -0
- data/lib/chef/provider/script.rb +42 -0
- data/lib/chef/provider/service.rb +135 -0
- data/lib/chef/provider/service/debian.rb +64 -0
- data/lib/chef/provider/service/freebsd.rb +156 -0
- data/lib/chef/provider/service/gentoo.rb +54 -0
- data/lib/chef/provider/service/init.rb +71 -0
- data/lib/chef/provider/service/redhat.rb +62 -0
- data/lib/chef/provider/service/simple.rb +114 -0
- data/lib/chef/provider/subversion.rb +156 -0
- data/lib/chef/provider/template.rb +175 -0
- data/lib/chef/provider/user.rb +170 -0
- data/lib/chef/provider/user/dscl.rb +280 -0
- data/lib/chef/provider/user/pw.rb +113 -0
- data/lib/chef/provider/user/useradd.rb +108 -0
- data/lib/chef/recipe.rb +105 -0
- data/lib/chef/resource.rb +380 -0
- data/lib/chef/resource/apt_package.rb +34 -0
- data/lib/chef/resource/bash.rb +33 -0
- data/lib/chef/resource/breakpoint.rb +35 -0
- data/lib/chef/resource/cron.rb +179 -0
- data/lib/chef/resource/csh.rb +33 -0
- data/lib/chef/resource/deploy.rb +359 -0
- data/lib/chef/resource/deploy_revision.rb +35 -0
- data/lib/chef/resource/directory.rb +76 -0
- data/lib/chef/resource/dpkg_package.rb +34 -0
- data/lib/chef/resource/easy_install_package.rb +41 -0
- data/lib/chef/resource/erl_call.rb +83 -0
- data/lib/chef/resource/execute.rb +127 -0
- data/lib/chef/resource/file.rb +84 -0
- data/lib/chef/resource/gem_package.rb +41 -0
- data/lib/chef/resource/git.rb +36 -0
- data/lib/chef/resource/group.rb +70 -0
- data/lib/chef/resource/http_request.rb +52 -0
- data/lib/chef/resource/ifconfig.rb +134 -0
- data/lib/chef/resource/link.rb +78 -0
- data/lib/chef/resource/macports_package.rb +29 -0
- data/lib/chef/resource/mdadm.rb +82 -0
- data/lib/chef/resource/mount.rb +135 -0
- data/lib/chef/resource/package.rb +80 -0
- data/lib/chef/resource/perl.rb +33 -0
- data/lib/chef/resource/portage_package.rb +33 -0
- data/lib/chef/resource/python.rb +33 -0
- data/lib/chef/resource/remote_directory.rb +91 -0
- data/lib/chef/resource/remote_file.rb +60 -0
- data/lib/chef/resource/route.rb +135 -0
- data/lib/chef/resource/ruby.rb +33 -0
- data/lib/chef/resource/ruby_block.rb +39 -0
- data/lib/chef/resource/scm.rb +137 -0
- data/lib/chef/resource/script.rb +51 -0
- data/lib/chef/resource/service.rb +134 -0
- data/lib/chef/resource/subversion.rb +34 -0
- data/lib/chef/resource/template.rb +60 -0
- data/lib/chef/resource/timestamped_deploy.rb +31 -0
- data/lib/chef/resource/user.rb +101 -0
- data/lib/chef/resource_collection.rb +212 -0
- data/lib/chef/resource_collection/stepable_iterator.rb +124 -0
- data/lib/chef/resource_definition.rb +67 -0
- data/lib/chef/rest.rb +298 -0
- data/lib/chef/role.rb +301 -0
- data/lib/chef/run_list.rb +164 -0
- data/lib/chef/runner.rb +130 -0
- data/lib/chef/search/query.rb +71 -0
- data/lib/chef/shef.rb +220 -0
- data/lib/chef/shef/ext.rb +297 -0
- data/lib/chef/shef/shef_session.rb +175 -0
- data/lib/chef/streaming_cookbook_uploader.rb +185 -0
- data/lib/chef/tasks/chef_repo.rake +245 -0
- data/lib/chef/util/file_edit.rb +125 -0
- data/lib/chef/util/fileedit.rb +121 -0
- data/lib/chef/webui_user.rb +231 -0
- metadata +398 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: AJ Christensen (<aj@hjksolutions.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 Service < Chef::Resource
|
|
24
|
+
|
|
25
|
+
def initialize(name, collection=nil, node=nil)
|
|
26
|
+
super(name, collection, node)
|
|
27
|
+
@resource_name = :service
|
|
28
|
+
@service_name = name
|
|
29
|
+
@enabled = nil
|
|
30
|
+
@running = nil
|
|
31
|
+
@pattern = service_name
|
|
32
|
+
@start_command = nil
|
|
33
|
+
@stop_command = nil
|
|
34
|
+
@status_command = nil
|
|
35
|
+
@restart_command = nil
|
|
36
|
+
@reload_command = nil
|
|
37
|
+
@action = "nothing"
|
|
38
|
+
@supports = { :restart => false, :reload => false, :status => false }
|
|
39
|
+
@allowed_actions.push(:enable, :disable, :start, :stop, :restart, :reload)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def service_name(arg=nil)
|
|
43
|
+
set_or_return(
|
|
44
|
+
:service_name,
|
|
45
|
+
arg,
|
|
46
|
+
:kind_of => [ String ]
|
|
47
|
+
)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# regex for match against ps -ef when !supports[:has_status] && status == nil
|
|
51
|
+
def pattern(arg=nil)
|
|
52
|
+
set_or_return(
|
|
53
|
+
:pattern,
|
|
54
|
+
arg,
|
|
55
|
+
:kind_of => [ String ]
|
|
56
|
+
)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# command to call to start service
|
|
60
|
+
def start_command(arg=nil)
|
|
61
|
+
set_or_return(
|
|
62
|
+
:start_command,
|
|
63
|
+
arg,
|
|
64
|
+
:kind_of => [ String ]
|
|
65
|
+
)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# command to call to stop service
|
|
69
|
+
def stop_command(arg=nil)
|
|
70
|
+
set_or_return(
|
|
71
|
+
:stop_command,
|
|
72
|
+
arg,
|
|
73
|
+
:kind_of => [ String ]
|
|
74
|
+
)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# command to call to get status of service
|
|
78
|
+
def status_command(arg=nil)
|
|
79
|
+
set_or_return(
|
|
80
|
+
:status_command,
|
|
81
|
+
arg,
|
|
82
|
+
:kind_of => [ String ]
|
|
83
|
+
)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# command to call to restart service
|
|
87
|
+
def restart_command(arg=nil)
|
|
88
|
+
set_or_return(
|
|
89
|
+
:restart_command,
|
|
90
|
+
arg,
|
|
91
|
+
:kind_of => [ String ]
|
|
92
|
+
)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def reload_command(arg=nil)
|
|
96
|
+
set_or_return(
|
|
97
|
+
:reload_command,
|
|
98
|
+
arg,
|
|
99
|
+
:kind_of => [ String ]
|
|
100
|
+
)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# if the service is enabled or not
|
|
104
|
+
def enabled(arg=nil)
|
|
105
|
+
set_or_return(
|
|
106
|
+
:enabled,
|
|
107
|
+
arg,
|
|
108
|
+
:kind_of => [ TrueClass, FalseClass ]
|
|
109
|
+
)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# if the service is running or not
|
|
113
|
+
def running(arg=nil)
|
|
114
|
+
set_or_return(
|
|
115
|
+
:running,
|
|
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
|
+
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Daniel DeLeo (<dan@kallistec.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/scm"
|
|
20
|
+
|
|
21
|
+
class Chef
|
|
22
|
+
class Resource
|
|
23
|
+
class Subversion < Chef::Resource::Scm
|
|
24
|
+
|
|
25
|
+
def initialize(name, collection=nil, node=nil)
|
|
26
|
+
super(name, collection, node)
|
|
27
|
+
@resource_name = :subversion
|
|
28
|
+
@provider = Chef::Provider::Subversion
|
|
29
|
+
allowed_actions << :force_export
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
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 Template < Chef::Resource::File
|
|
24
|
+
|
|
25
|
+
def initialize(name, collection=nil, node=nil)
|
|
26
|
+
super(name, collection, node)
|
|
27
|
+
@resource_name = :template
|
|
28
|
+
@action = "create"
|
|
29
|
+
@source = "#{::File.basename(name)}.erb"
|
|
30
|
+
@cookbook = nil
|
|
31
|
+
@variables = Hash.new
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def source(file=nil)
|
|
35
|
+
set_or_return(
|
|
36
|
+
:source,
|
|
37
|
+
file,
|
|
38
|
+
:kind_of => [ String ]
|
|
39
|
+
)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def variables(args=nil)
|
|
43
|
+
set_or_return(
|
|
44
|
+
:variables,
|
|
45
|
+
args,
|
|
46
|
+
:kind_of => [ Hash ]
|
|
47
|
+
)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def cookbook(args=nil)
|
|
51
|
+
set_or_return(
|
|
52
|
+
:cookbook,
|
|
53
|
+
args,
|
|
54
|
+
:kind_of => [ String ]
|
|
55
|
+
)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Daniel DeLeo (<dan@kallistec.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2009 Daniel DeLeo
|
|
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
|
+
|
|
22
|
+
# Convenience class for using the deploy resource with the timestamped
|
|
23
|
+
# deployment strategy (provider)
|
|
24
|
+
class TimestampedDeploy < Chef::Resource::Deploy
|
|
25
|
+
def initialize(*args, &block)
|
|
26
|
+
super(*args, &block)
|
|
27
|
+
@provider = Chef::Provider::Deploy::Timestamped
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,101 @@
|
|
|
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 User < Chef::Resource
|
|
24
|
+
|
|
25
|
+
def initialize(name, collection=nil, node=nil)
|
|
26
|
+
super(name, collection, node)
|
|
27
|
+
@resource_name = :user
|
|
28
|
+
@username = name
|
|
29
|
+
@comment = nil
|
|
30
|
+
@uid = nil
|
|
31
|
+
@gid = nil
|
|
32
|
+
@home = nil
|
|
33
|
+
@shell = nil
|
|
34
|
+
@password = nil
|
|
35
|
+
@action = :create
|
|
36
|
+
@supports = {
|
|
37
|
+
:manage_home => false,
|
|
38
|
+
:non_unique => false
|
|
39
|
+
}
|
|
40
|
+
@allowed_actions.push(:create, :remove, :modify, :manage, :lock, :unlock)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def username(arg=nil)
|
|
44
|
+
set_or_return(
|
|
45
|
+
:username,
|
|
46
|
+
arg,
|
|
47
|
+
:kind_of => [ String ]
|
|
48
|
+
)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def comment(arg=nil)
|
|
52
|
+
set_or_return(
|
|
53
|
+
:comment,
|
|
54
|
+
arg,
|
|
55
|
+
:kind_of => [ String ]
|
|
56
|
+
)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def uid(arg=nil)
|
|
60
|
+
set_or_return(
|
|
61
|
+
:uid,
|
|
62
|
+
arg,
|
|
63
|
+
:kind_of => [ String, Integer ]
|
|
64
|
+
)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def gid(arg=nil)
|
|
68
|
+
set_or_return(
|
|
69
|
+
:gid,
|
|
70
|
+
arg,
|
|
71
|
+
:kind_of => [ String, Integer ]
|
|
72
|
+
)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def home(arg=nil)
|
|
76
|
+
set_or_return(
|
|
77
|
+
:home,
|
|
78
|
+
arg,
|
|
79
|
+
:kind_of => [ String ]
|
|
80
|
+
)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def shell(arg=nil)
|
|
84
|
+
set_or_return(
|
|
85
|
+
:shell,
|
|
86
|
+
arg,
|
|
87
|
+
:kind_of => [ String ]
|
|
88
|
+
)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def password(arg=nil)
|
|
92
|
+
set_or_return(
|
|
93
|
+
:password,
|
|
94
|
+
arg,
|
|
95
|
+
:kind_of => [ String ]
|
|
96
|
+
)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
3
|
+
# Author:: Christopher Walters (<cw@opscode.com>)
|
|
4
|
+
# Copyright:: Copyright (c) 2008, 2009 Opscode, Inc.
|
|
5
|
+
# License:: Apache License, Version 2.0
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
|
|
20
|
+
require 'chef/resource'
|
|
21
|
+
require 'chef/resource_collection/stepable_iterator'
|
|
22
|
+
|
|
23
|
+
class Chef
|
|
24
|
+
class ResourceCollection
|
|
25
|
+
include Enumerable
|
|
26
|
+
|
|
27
|
+
attr_reader :iterator
|
|
28
|
+
|
|
29
|
+
def initialize
|
|
30
|
+
@resources = Array.new
|
|
31
|
+
@resources_by_name = Hash.new
|
|
32
|
+
@insert_after_idx = nil
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def all_resources
|
|
36
|
+
@resources
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def [](index)
|
|
40
|
+
@resources[index]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def []=(index, arg)
|
|
44
|
+
is_chef_resource(arg)
|
|
45
|
+
@resources[index] = arg
|
|
46
|
+
@resources_by_name[arg.to_s] = index
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def <<(*args)
|
|
50
|
+
args.flatten.each do |a|
|
|
51
|
+
is_chef_resource(a)
|
|
52
|
+
@resources << a
|
|
53
|
+
@resources_by_name[a.to_s] = @resources.length - 1
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def insert(resource)
|
|
58
|
+
is_chef_resource(resource)
|
|
59
|
+
if @insert_after_idx
|
|
60
|
+
# in the middle of executing a run, so any resources inserted now should
|
|
61
|
+
# be placed after the most recent addition done by the currently executing
|
|
62
|
+
# resource
|
|
63
|
+
@resources.insert(@insert_after_idx + 1, resource)
|
|
64
|
+
# update name -> location mappings and register new resource
|
|
65
|
+
@resources_by_name.each_key do |key|
|
|
66
|
+
@resources_by_name[key] += 1 if @resources_by_name[key] > @insert_after_idx
|
|
67
|
+
end
|
|
68
|
+
@resources_by_name[resource.to_s] = @insert_after_idx + 1
|
|
69
|
+
@insert_after_idx += 1
|
|
70
|
+
else
|
|
71
|
+
@resources << resource
|
|
72
|
+
@resources_by_name[resource.to_s] = @resources.length - 1
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def push(*args)
|
|
77
|
+
args.flatten.each do |arg|
|
|
78
|
+
is_chef_resource(arg)
|
|
79
|
+
@resources.push(arg)
|
|
80
|
+
@resources_by_name[arg.to_s] = @resources.length - 1
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def each
|
|
85
|
+
@resources.each do |resource|
|
|
86
|
+
yield resource
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def execute_each_resource(&resource_exec_block)
|
|
91
|
+
@iterator = StepableIterator.for_collection(@resources)
|
|
92
|
+
@iterator.each_with_index do |resource, idx|
|
|
93
|
+
@insert_after_idx = idx
|
|
94
|
+
yield resource
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def each_index
|
|
99
|
+
@resources.each_index do |i|
|
|
100
|
+
yield i
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def lookup(resource)
|
|
105
|
+
lookup_by = nil
|
|
106
|
+
if resource.kind_of?(Chef::Resource)
|
|
107
|
+
lookup_by = resource.to_s
|
|
108
|
+
elsif resource.kind_of?(String)
|
|
109
|
+
lookup_by = resource
|
|
110
|
+
else
|
|
111
|
+
raise ArgumentError, "Must pass a Chef::Resource or String to lookup"
|
|
112
|
+
end
|
|
113
|
+
res = @resources_by_name[lookup_by]
|
|
114
|
+
unless res
|
|
115
|
+
raise ArgumentError, "Cannot find a resource matching #{lookup_by} (did you define it first?)"
|
|
116
|
+
end
|
|
117
|
+
@resources[res]
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# Find existing resources by searching the list of existing resources. Possible
|
|
121
|
+
# forms are:
|
|
122
|
+
#
|
|
123
|
+
# resources(:file => "foobar")
|
|
124
|
+
# resources(:file => [ "foobar", "baz" ])
|
|
125
|
+
# resources("file[foobar]", "file[baz]")
|
|
126
|
+
# resources("file[foobar,baz]")
|
|
127
|
+
#
|
|
128
|
+
# Returns the matching resource, or an Array of matching resources.
|
|
129
|
+
#
|
|
130
|
+
# Raises an ArgumentError if you feed it bad lookup information
|
|
131
|
+
# Raises a Runtime Error if it can't find the resources you are looking for.
|
|
132
|
+
def resources(*args)
|
|
133
|
+
results = Array.new
|
|
134
|
+
args.each do |arg|
|
|
135
|
+
case arg
|
|
136
|
+
when Hash
|
|
137
|
+
results << find_resource_by_hash(arg)
|
|
138
|
+
when String
|
|
139
|
+
results << find_resource_by_string(arg)
|
|
140
|
+
else
|
|
141
|
+
raise ArgumentError, "resources takes arguments as a hash or strings!"
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
flat_results = results.flatten
|
|
145
|
+
flat_results.length == 1 ? flat_results[0] : flat_results
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
# Serialize this object as a hash
|
|
149
|
+
def to_json(*a)
|
|
150
|
+
instance_vars = Hash.new
|
|
151
|
+
self.instance_variables.each do |iv|
|
|
152
|
+
instance_vars[iv] = self.instance_variable_get(iv)
|
|
153
|
+
end
|
|
154
|
+
results = {
|
|
155
|
+
'json_class' => self.class.name,
|
|
156
|
+
'instance_vars' => instance_vars
|
|
157
|
+
}
|
|
158
|
+
results.to_json(*a)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def self.json_create(o)
|
|
162
|
+
collection = self.new()
|
|
163
|
+
o["instance_vars"].each do |k,v|
|
|
164
|
+
collection.instance_variable_set(k.to_sym, v)
|
|
165
|
+
end
|
|
166
|
+
collection
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
private
|
|
170
|
+
|
|
171
|
+
def find_resource_by_hash(arg)
|
|
172
|
+
results = Array.new
|
|
173
|
+
arg.each do |resource_name, name_list|
|
|
174
|
+
names = name_list.kind_of?(Array) ? name_list : [ name_list ]
|
|
175
|
+
names.each do |name|
|
|
176
|
+
res_name = "#{resource_name.to_s}[#{name}]"
|
|
177
|
+
results << lookup(res_name)
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
return results
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
def find_resource_by_string(arg)
|
|
184
|
+
results = Array.new
|
|
185
|
+
case arg
|
|
186
|
+
when /^(.+)\[(.+?),(.+)\]$/
|
|
187
|
+
resource_type = $1
|
|
188
|
+
arg =~ /^.+\[(.+)\]$/
|
|
189
|
+
resource_list = $1
|
|
190
|
+
resource_list.split(",").each do |name|
|
|
191
|
+
resource_name = "#{resource_type}[#{name}]"
|
|
192
|
+
results << lookup(resource_name)
|
|
193
|
+
end
|
|
194
|
+
when /^(.+)\[(.+)\]$/
|
|
195
|
+
resource_type = $1
|
|
196
|
+
name = $2
|
|
197
|
+
resource_name = "#{resource_type}[#{name}]"
|
|
198
|
+
results << lookup(resource_name)
|
|
199
|
+
else
|
|
200
|
+
raise ArgumentError, "You must have a string like resource_type[name]!"
|
|
201
|
+
end
|
|
202
|
+
return results
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def is_chef_resource(arg)
|
|
206
|
+
unless arg.kind_of?(Chef::Resource)
|
|
207
|
+
raise ArgumentError, "Members must be Chef::Resource's"
|
|
208
|
+
end
|
|
209
|
+
true
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
end
|