SamSu 9ca03fcd19 if not any conf change, service will not restart
Change-Id: I821ee220c4242dca427ce8ae05f51e23fdd6064e
2014-03-05 18:25:55 -08:00

75 lines
2.3 KiB
Ruby

#
# Cookbook Name:: openssh
# Recipe:: default
#
# Copyright 2008-2013 Opscode, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
def listen_addr_for(interface, type)
interface_node = node['network']['interfaces'][interface]['addresses']
interface_node.select { |address, data| data['family'] == type }.keys[0]
end
node['openssh']['package_name'].each do |name|
package name
end
service_provider = Chef::Provider::Service::Upstart if 'ubuntu' == node['platform'] &&
Chef::VersionConstraint.new('>= 13.10').include?(node['platform_version'])
service 'ssh' do
provider service_provider
service_name node['openssh']['service_name']
supports value_for_platform(
'debian' => { 'default' => [:restart, :reload, :status] },
'ubuntu' => {
'8.04' => [:restart, :reload],
'default' => [:restart, :reload, :status]
},
'centos' => { 'default' => [:restart, :reload, :status] },
'redhat' => { 'default' => [:restart, :reload, :status] },
'fedora' => { 'default' => [:restart, :reload, :status] },
'scientific' => { 'default' => [:restart, :reload, :status] },
'arch' => { 'default' => [:restart] },
'default' => { 'default' => [:restart, :reload] }
)
action [:enable, :start]
end
template '/etc/ssh/ssh_config' do
source 'ssh_config.erb'
mode '0644'
owner 'root'
group node['openssh']['rootgroup']
end
if node['openssh']['listen_interfaces']
listen_addresses = Array.new.tap do |a|
node['openssh']['listen_interfaces'].each_pair do |interface, type|
a << listen_addr_for(interface, type)
end
end
node.set['openssh']['server']['listen_address'] = listen_addresses
end
template '/etc/ssh/sshd_config' do
source 'sshd_config.erb'
mode node['openssh']['config_mode']
owner 'root'
group node['openssh']['rootgroup']
notifies :restart, 'service[ssh]'
end