X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/9917940ecf5a76f484fcab9f49f41d2bdf4c69f3..b264f056bac40543e79cde313958e101cb90ec7e:/cookbooks/hardware/recipes/default.rb diff --git a/cookbooks/hardware/recipes/default.rb b/cookbooks/hardware/recipes/default.rb index 711fa4571..188042514 100644 --- a/cookbooks/hardware/recipes/default.rb +++ b/cookbooks/hardware/recipes/default.rb @@ -51,7 +51,7 @@ end units = [] -if node[:roles].include?("bytemark") || node[:roles].include?("exonetric") +if node[:roles].include?("bytemark") || node[:roles].include?("exonetric") || node[:roles].include?("prgmr") units << "0" end @@ -174,7 +174,14 @@ service "haveged" do action [:enable, :start] end -package "ipmitool" if node[:kernel][:modules].include?("ipmi_si") +if node[:kernel][:modules].include?("ipmi_si") + package "ipmitool" + package "freeipmi-tools" + + prometheus_exporter "ipmi" do + port 9290 + end +end package "irqbalance" @@ -342,23 +349,24 @@ intel_nvmes = nvmes.select { |pci| pci[:vendor_name] == "Intel Corporation" } if !intel_ssds.empty? || !intel_nvmes.empty? package "unzip" - intel_ssd_tool_version = "3.0.25" + intel_ssd_tool_version = "3.0.26" + intel_ssd_package_version = "#{intel_ssd_tool_version}.400-1" remote_file "#{Chef::Config[:file_cache_path]}/Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip" do - source "https://downloadmirror.intel.com/29556/eng/Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip" + source "https://downloadmirror.intel.com/29720/eng/Intel_SSD_DCT_#{intel_ssd_tool_version}_Linux.zip" end execute "#{Chef::Config[:file_cache_path]}/Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip" do - command "unzip Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux/isdct_#{intel_ssd_tool_version}-1_amd64.deb" + command "unzip Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip isdct_#{intel_ssd_package_version}_amd64.deb" cwd Chef::Config[:file_cache_path] user "root" group "root" - not_if { ::File.exist?("#{Chef::Config[:file_cache_path]}/Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux/isdct_#{intel_ssd_tool_version}-1_amd64.deb") } + not_if { ::File.exist?("#{Chef::Config[:file_cache_path]}/isdct_#{intel_ssd_package_version}_amd64.deb") } end dpkg_package "isdct" do - version "#{intel_ssd_tool_version}-1" - source "#{Chef::Config[:file_cache_path]}/Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux/isdct_#{intel_ssd_tool_version}-1_amd64.deb" + version "#{intel_ssd_package_version}" + source "#{Chef::Config[:file_cache_path]}/isdct_#{intel_ssd_package_version}_amd64.deb" end end @@ -380,6 +388,13 @@ disks = disks.map do |disk| elsif smart =~ %r{^.*,(\d+)/(\d+)$} munin = "#{device}-#{Regexp.last_match(1)}:#{Regexp.last_match(2)}" end + elsif disk[:device] + device = disk[:device].sub("/dev/", "") + smart = disk[:smart_device] + + if smart =~ /^.*,(\d+),(\d+),(\d+)$/ + munin = "#{device}-#{Regexp.last_match(1)}:#{Regexp.last_match(2)}:#{Regexp.last_match(3)}" + end end elsif disk[:device] =~ %r{^/dev/(nvme\d+)n\d+$} device = Regexp.last_match(1) @@ -439,6 +454,18 @@ if disks.count.positive? subscribes :restart, "template[/etc/default/smartmontools]" end + template "/etc/prometheus/collectors/smart.devices" do + source "smart.devices.erb" + owner "root" + group "root" + mode "644" + variables :disks => disks + end + + prometheus_collector "smart" do + interval "15m" + 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 @@ -452,18 +479,6 @@ if disks.count.positive? conf_variables :disk => disk end end - - template "/etc/prometheus/collectors/smart.devices" do - source "smart.devices.erb" - owner "root" - group "root" - mode "644" - variables :disks => disks - end - - prometheus_collector "smart" do - interval "15m" - end else service "smartd" do action [:stop, :disable]