X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/9e6069ae06e994e399ac0952ff2a712dc968e7af..d1be18e9426db54d3cf367855ee95fd8ed117e3b:/cookbooks/hardware/recipes/default.rb diff --git a/cookbooks/hardware/recipes/default.rb b/cookbooks/hardware/recipes/default.rb index 3a93a4ed9..620c7d58b 100644 --- a/cookbooks/hardware/recipes/default.rb +++ b/cookbooks/hardware/recipes/default.rb @@ -18,6 +18,7 @@ # include_recipe "tools" +include_recipe "munin" case node[:cpu][:"0"][:vendor_id] when "GenuineIntel" @@ -119,6 +120,16 @@ unless unit.nil? end end +# if we need a different / special kernel version to make the hardware +# work (e.g: https://github.com/openstreetmap/operations/issues/45) then +# ensure that we have the package installed. the grub template will +# make sure that this is the default on boot. +unless node[:hardware][:grub][:kernel] == :latest + package "linux-image-#{node[:hardware][:grub][:kernel]}-generic" + package "linux-image-extra-#{node[:hardware][:grub][:kernel]}-generic" + package "linux-headers-#{node[:hardware][:grub][:kernel]}-generic" +end + if File.exist?("/etc/default/grub") execute "update-grub" do action :nothing @@ -190,7 +201,7 @@ node[:kernel][:modules].each_key do |modname| when "mptsas" tools_packages << "lsiutil" # status_packages["mpt-status"] ||= [] - when "mpt2sas" + when "mpt2sas", "mpt3sas" tools_packages << "sas2ircu" status_packages["sas2ircu-status"] ||= [] when "megaraid_mm" @@ -326,11 +337,13 @@ if status_packages["sas2ircu-status"] Dir.glob("/sys/class/scsi_host/host*") do |host| driver = File.new("#{host}/proc_name").read.chomp - next unless driver == "mpt2sas" + next unless driver == "mpt2sas" || driver == "mpt3sas" bus = host.sub("/sys/class/scsi_host/host", "") Dir.glob("/sys/bus/scsi/devices/#{bus}:0:*/scsi_generic/*").each do |sg| + next if File.directory?("#{sg}/../../block") + disks << { :device => File.basename(sg) } end end @@ -410,6 +423,12 @@ if disks.count > 0 supports :status => true, :restart => true, :reload => true end + # Don't try and do munin monitoring of disks behind + # an Areca controller as they only allow one thing to + # talk to the controller at a time and smartd will + # throw errors if it clashes with munin + disks = disks.reject { |disk| disk[:driver] == "areca" } + disks.each do |disk| munin_plugin "smart_#{disk[:munin]}" do target "smart_"