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,141 @@
|
|
|
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/provider/file'
|
|
20
|
+
require 'chef/rest'
|
|
21
|
+
require 'chef/mixin/find_preferred_file'
|
|
22
|
+
require 'uri'
|
|
23
|
+
require 'tempfile'
|
|
24
|
+
require 'net/https'
|
|
25
|
+
|
|
26
|
+
class Chef
|
|
27
|
+
class Provider
|
|
28
|
+
class RemoteFile < Chef::Provider::File
|
|
29
|
+
|
|
30
|
+
include Chef::Mixin::FindPreferredFile
|
|
31
|
+
|
|
32
|
+
def action_create
|
|
33
|
+
Chef::Log.debug("Checking #{@new_resource} for changes")
|
|
34
|
+
do_remote_file(@new_resource.source, @current_resource.path)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def action_create_if_missing
|
|
38
|
+
if ::File.exists?(@new_resource.path)
|
|
39
|
+
Chef::Log.debug("File #{@new_resource.path} exists, taking no action.")
|
|
40
|
+
else
|
|
41
|
+
action_create
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def do_remote_file(source, path)
|
|
46
|
+
retval = true
|
|
47
|
+
|
|
48
|
+
if(@new_resource.checksum && @current_resource.checksum && @current_resource.checksum =~ /^#{@new_resource.checksum}/)
|
|
49
|
+
Chef::Log.debug("File #{@new_resource} checksum matches, not updating")
|
|
50
|
+
else
|
|
51
|
+
begin
|
|
52
|
+
# The remote filehandle
|
|
53
|
+
raw_file = get_from_uri(source) ||
|
|
54
|
+
get_from_server(source, @current_resource.checksum) ||
|
|
55
|
+
get_from_local_cookbook(source)
|
|
56
|
+
|
|
57
|
+
# If the file exists
|
|
58
|
+
Chef::Log.debug "#{@new_resource}: Checking for file existence of #{@new_resource.path}"
|
|
59
|
+
if ::File.exists?(@new_resource.path)
|
|
60
|
+
# And it matches the checksum of the raw file
|
|
61
|
+
@new_resource.checksum(self.checksum(raw_file.path))
|
|
62
|
+
Chef::Log.debug "#{@new_resource}: File exists at #{@new_resource.path}"
|
|
63
|
+
Chef::Log.debug "#{@new_resource}: Target checksum: #{@current_resource.checksum}"
|
|
64
|
+
Chef::Log.debug "#{@new_resource}: Source checksum: #{@new_resource.checksum}"
|
|
65
|
+
if @new_resource.checksum != @current_resource.checksum
|
|
66
|
+
# Updating target file, let's perform a backup!
|
|
67
|
+
Chef::Log.debug "#{@new_resource}: checksum changed from #{@current_resource.checksum} to #{@new_resource.checksum}"
|
|
68
|
+
Chef::Log.info "#{@new_resource}: Updating #{@new_resource.path}"
|
|
69
|
+
backup @new_resource.path
|
|
70
|
+
FileUtils.cp raw_file.path, @new_resource.path
|
|
71
|
+
@new_resource.updated = true
|
|
72
|
+
else
|
|
73
|
+
Chef::Log.debug "#{@new_resource}: Target and Source checksums are the same, taking no action"
|
|
74
|
+
end
|
|
75
|
+
else
|
|
76
|
+
# We're creating a new file
|
|
77
|
+
Chef::Log.info "#{@new_resource}: Creating #{@new_resource.path}"
|
|
78
|
+
FileUtils.cp raw_file.path, @new_resource.path
|
|
79
|
+
@new_resource.updated = true
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# We're done with the file, so make sure to close it if it was open.
|
|
83
|
+
raw_file.close unless raw_file.closed?
|
|
84
|
+
rescue Net::HTTPRetriableError => e
|
|
85
|
+
if e.response.kind_of?(Net::HTTPNotModified)
|
|
86
|
+
Chef::Log.debug("File #{path} is unchanged")
|
|
87
|
+
retval = false
|
|
88
|
+
else
|
|
89
|
+
raise e
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
set_owner if @new_resource.owner
|
|
95
|
+
set_group if @new_resource.group
|
|
96
|
+
set_mode if @new_resource.mode
|
|
97
|
+
|
|
98
|
+
retval
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def get_from_uri(source)
|
|
102
|
+
begin
|
|
103
|
+
uri = URI.parse(source)
|
|
104
|
+
if uri.absolute
|
|
105
|
+
r = Chef::REST.new(source, nil, nil)
|
|
106
|
+
Chef::Log.debug("Downloading from absolute URI: #{source}")
|
|
107
|
+
r.get_rest(source, true).open
|
|
108
|
+
end
|
|
109
|
+
rescue URI::InvalidURIError
|
|
110
|
+
nil
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def get_from_server(source, current_checksum)
|
|
115
|
+
unless Chef::Config[:solo]
|
|
116
|
+
r = Chef::REST.new(Chef::Config[:remotefile_url])
|
|
117
|
+
url = generate_url(source, "files", :checksum => current_checksum)
|
|
118
|
+
Chef::Log.debug("Downloading from server: #{url}")
|
|
119
|
+
r.get_rest(url, true).open
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def get_from_local_cookbook(source)
|
|
124
|
+
if Chef::Config[:solo]
|
|
125
|
+
cookbook_name = @new_resource.cookbook || @new_resource.cookbook_name
|
|
126
|
+
filename = find_preferred_file(
|
|
127
|
+
cookbook_name,
|
|
128
|
+
:remote_file,
|
|
129
|
+
source,
|
|
130
|
+
@node[:fqdn],
|
|
131
|
+
@node[:platform],
|
|
132
|
+
@node[:platform_version]
|
|
133
|
+
)
|
|
134
|
+
Chef::Log.debug("Using local file for remote_file:#{filename}")
|
|
135
|
+
::File.open(filename)
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
@@ -0,0 +1,118 @@
|
|
|
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/log'
|
|
20
|
+
require 'chef/mixin/command'
|
|
21
|
+
require 'chef/provider'
|
|
22
|
+
require 'erb'
|
|
23
|
+
|
|
24
|
+
class Chef
|
|
25
|
+
class Provider
|
|
26
|
+
class Route < Chef::Provider
|
|
27
|
+
include Chef::Mixin::Command
|
|
28
|
+
|
|
29
|
+
def load_current_resource
|
|
30
|
+
@current_resource = Chef::Resource::Route.new(@new_resource.name)
|
|
31
|
+
|
|
32
|
+
Chef::Log.debug("Checking routes for #{@current_resource.target}")
|
|
33
|
+
status = popen4("route -n") do |pid, stdin, stdout, stderr|
|
|
34
|
+
stdout.each do |line|
|
|
35
|
+
case line
|
|
36
|
+
# Destination Gateway Genmask Flags Metric Ref Use Iface
|
|
37
|
+
when /^#{@new_resource.target}\s+([\d.]+)\s+([\d.]+)\s+(.+)\s+(\d+)\s+(.+)\s+(.+)\s+(\w+)$/
|
|
38
|
+
@current_resource.target(@new_resource.target)
|
|
39
|
+
@current_resource.gateway($1)
|
|
40
|
+
@current_resource.netmask($2)
|
|
41
|
+
@current_resource.metric($4.to_i)
|
|
42
|
+
@current_resource.device($7)
|
|
43
|
+
Chef::Log.debug("Found route ip:#{@current_resource.target} gw:#{@current_resource.gateway} nm:#{@current_resource.netmask} " +
|
|
44
|
+
"metric:#{@current_resource.metric} dev:#{@current_resource.device}")
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
unless status.exitstatus == 0
|
|
50
|
+
raise Chef::Exception::Route, "route failed - #{status.inspect}!"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
@current_resource
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def action_add
|
|
57
|
+
# check to see if load_current_resource found the route
|
|
58
|
+
unless @current_resource.gateway
|
|
59
|
+
if @new_resource.route_type == :net
|
|
60
|
+
command = "route add -net #{@new_resource.target}"
|
|
61
|
+
else
|
|
62
|
+
command = "route add #{@new_resource.target}"
|
|
63
|
+
end
|
|
64
|
+
command << " netmask #{@new_resource.netmask}" if @new_resource.netmask
|
|
65
|
+
command << " gw #{@new_resource.gateway}" if @new_resource.gateway
|
|
66
|
+
command << " metric #{@new_resource.metric}" if @new_resource.metric
|
|
67
|
+
command << " dev #{@new_resource.device}" if @new_resource.device
|
|
68
|
+
|
|
69
|
+
run_command(
|
|
70
|
+
:command => command
|
|
71
|
+
)
|
|
72
|
+
@new_resource.updated = true
|
|
73
|
+
else
|
|
74
|
+
Chef::Log.debug("Route #{@current_resource} already exists")
|
|
75
|
+
end
|
|
76
|
+
# Write out the config files
|
|
77
|
+
generate_config
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def action_delete
|
|
81
|
+
# check to see if load_current_resource found the route
|
|
82
|
+
if @current_resource.gateway
|
|
83
|
+
command = "route del #{@new_resource.target}"
|
|
84
|
+
command << " netmask #{@new_resource.netmask}" if @new_resource.netmask
|
|
85
|
+
command << " gw #{@new_resource.gateway}" if @new_resource.gateway
|
|
86
|
+
command << " metric #{@new_resource.metric}" if @new_resource.metric
|
|
87
|
+
command << " dev #{@new_resource.device}" if @new_resource.device
|
|
88
|
+
|
|
89
|
+
run_command(
|
|
90
|
+
:command => command
|
|
91
|
+
)
|
|
92
|
+
@new_resource.updated = true
|
|
93
|
+
else
|
|
94
|
+
Chef::Log.debug("Route #{@current_resource} does not exist")
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def generate_config
|
|
99
|
+
b = binding
|
|
100
|
+
case node[:platform]
|
|
101
|
+
when ("centos" || "redhat" || "fedora")
|
|
102
|
+
content = %{
|
|
103
|
+
<% if @new_resource.networking %>NETWORKING=<%= @new_resource.networking %><% end %>
|
|
104
|
+
<% if @new_resource.networking_ipv6 %>NETWORKING_IPV6=<%= @new_resource.networking_ipv6 %><% end %>
|
|
105
|
+
<% if @new_resource.hostname %>HOSTNAME=<%= @new_resource.hostname %><% end %>
|
|
106
|
+
<% if @new_resource.name %>GATEWAY=<%= @new_resource.name %><% end %>
|
|
107
|
+
<% if @new_resource.domainname %>DOMAINNAME=<%= @new_resource.domainname %><% end %>
|
|
108
|
+
<% if @new_resource.domainname %>DOMAIN=<%= @new_resource.domainname %><% end %>
|
|
109
|
+
}
|
|
110
|
+
template = ::ERB.new(content)
|
|
111
|
+
network_file = ::File.new("/etc/sysconfig/network", "w")
|
|
112
|
+
network_file.puts(template.result(b))
|
|
113
|
+
network_file.close
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
3
|
+
# Author:: AJ Christensen (<aj@opscode.com>)
|
|
4
|
+
# Copyright:: Copyright (c) 2009 Opscode
|
|
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
|
+
class Chef
|
|
21
|
+
class Provider
|
|
22
|
+
class RubyBlock < Chef::Provider
|
|
23
|
+
def load_current_resource
|
|
24
|
+
Chef::Log.debug(@new_resource.inspect)
|
|
25
|
+
true
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def action_create
|
|
29
|
+
@new_resource.block.call
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
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 'tempfile'
|
|
20
|
+
require 'chef/provider/execute'
|
|
21
|
+
|
|
22
|
+
class Chef
|
|
23
|
+
class Provider
|
|
24
|
+
class Script < Chef::Provider::Execute
|
|
25
|
+
|
|
26
|
+
def action_run
|
|
27
|
+
tf = Tempfile.new("chef-script")
|
|
28
|
+
tf.puts(@new_resource.code)
|
|
29
|
+
tf.close
|
|
30
|
+
|
|
31
|
+
fr = Chef::Resource::File.new(tf.path, nil, @node)
|
|
32
|
+
fr.owner(@new_resource.user)
|
|
33
|
+
fr.group(@new_resource.group)
|
|
34
|
+
fr.run_action(:create)
|
|
35
|
+
|
|
36
|
+
@new_resource.command("#{@new_resource.interpreter} #{tf.path}")
|
|
37
|
+
super
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,135 @@
|
|
|
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/mixin/command'
|
|
20
|
+
require 'chef/provider'
|
|
21
|
+
|
|
22
|
+
class Chef
|
|
23
|
+
class Provider
|
|
24
|
+
class Service < Chef::Provider
|
|
25
|
+
|
|
26
|
+
include Chef::Mixin::Command
|
|
27
|
+
|
|
28
|
+
def initialize(node, new_resource, collection=nil, definitions=nil, cookbook_loader=nil)
|
|
29
|
+
super(node, new_resource, collection, definitions, cookbook_loader)
|
|
30
|
+
@enabled = nil
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def action_enable
|
|
34
|
+
unless @current_resource.enabled
|
|
35
|
+
Chef::Log.debug("#{@new_resource}: attempting to enable")
|
|
36
|
+
status = enable_service()
|
|
37
|
+
if status
|
|
38
|
+
@new_resource.updated = true
|
|
39
|
+
Chef::Log.info("#{@new_resource}: enabled successfully")
|
|
40
|
+
end
|
|
41
|
+
else
|
|
42
|
+
Chef::Log.debug("#{@new_resource}: not enabling, already enabled")
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def action_disable
|
|
47
|
+
if @current_resource.enabled
|
|
48
|
+
Chef::Log.debug("#{@new_resource}: attempting to disable")
|
|
49
|
+
status = disable_service()
|
|
50
|
+
if status
|
|
51
|
+
@new_resource.updated = true
|
|
52
|
+
Chef::Log.info("#{@new_resource}: disabled successfully")
|
|
53
|
+
end
|
|
54
|
+
else
|
|
55
|
+
Chef::Log.debug("#{@new_resource}: not disabling, already disabled")
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def action_start
|
|
60
|
+
unless @current_resource.running
|
|
61
|
+
Chef::Log.debug("#{@new_resource}: attempting to start")
|
|
62
|
+
status = start_service()
|
|
63
|
+
if status
|
|
64
|
+
@new_resource.updated = true
|
|
65
|
+
Chef::Log.info("Started service #{@new_resource} successfully")
|
|
66
|
+
end
|
|
67
|
+
else
|
|
68
|
+
Chef::Log.debug("#{@new_resource}: not starting, already running")
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def action_stop
|
|
73
|
+
if @current_resource.running
|
|
74
|
+
Chef::Log.debug("#{@new_resource}: attempting to stop")
|
|
75
|
+
status = stop_service()
|
|
76
|
+
if status
|
|
77
|
+
@new_resource.updated = true
|
|
78
|
+
Chef::Log.info("#{@new_resource}: stopped successfully")
|
|
79
|
+
end
|
|
80
|
+
else
|
|
81
|
+
Chef::Log.debug("#{@new_resource}: not stopping, already stopped")
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def action_restart
|
|
86
|
+
Chef::Log.debug("#{@new_resource}: attempting to restart")
|
|
87
|
+
status = restart_service()
|
|
88
|
+
if status
|
|
89
|
+
@new_resource.updated = true
|
|
90
|
+
Chef::Log.info("#{@new_resource}: restarted successfully")
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def action_reload
|
|
95
|
+
unless @new_resource.supports[:reload] or @new_resource.reload_command
|
|
96
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :reload"
|
|
97
|
+
else
|
|
98
|
+
if @current_resource.running
|
|
99
|
+
Chef::Log.debug("#{@new_resource}: attempting to reload")
|
|
100
|
+
status = reload_service()
|
|
101
|
+
if status
|
|
102
|
+
@new_resource.updated = true
|
|
103
|
+
Chef::Log.info("#{@new_resource}: reloaded successfully")
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def enable_service(name)
|
|
110
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :enable"
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def disable_service(name)
|
|
114
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :disable"
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def start_service(name)
|
|
118
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :start"
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def stop_service(name)
|
|
122
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :stop"
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def restart_service(name)
|
|
126
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :restart"
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def reload_service(name)
|
|
130
|
+
raise Chef::Exceptions::UnsupportedAction, "#{self.to_s} does not support :restart"
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|