X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/e7132006a260b97b679b53476d5e925d0408f3cf..c7cf05063d1fc010c6579e3fa44862637687a79e:/cookbooks/hardware/recipes/default.rb?ds=sidebyside diff --git a/cookbooks/hardware/recipes/default.rb b/cookbooks/hardware/recipes/default.rb index 8a2a35e20..171855222 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,23 @@ 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" + + template "/etc/prometheus/ipmi_local.yml" do + source "ipmi_local.yml.erb" + owner "root" + group "root" + mode "644" + end + + prometheus_exporter "ipmi" do + port 9290 + options "--config.file=/etc/prometheus/ipmi_local.yml" + subscribes :restart, "template[/etc/prometheus/ipmi_local.yml]" + end +end package "irqbalance" @@ -342,23 +358,28 @@ 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.26" + intel_mas_tool_version = "1.7" + intel_mas_package_version = "#{intel_mas_tool_version}.130-0" - remote_file "#{Chef::Config[:file_cache_path]}/Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip" do - source "https://downloadmirror.intel.com/29720/eng/Intel_SSD_DCT_#{intel_ssd_tool_version}_Linux.zip" + remote_file "#{Chef::Config[:file_cache_path]}/Intel_MAS_CLI_Tool_#{intel_mas_tool_version}_Linux.zip" do + source "https://downloadmirror.intel.com/30379/eng/Intel%C2%AE_MAS_CLI_Tool_Linux_#{intel_mas_tool_version}.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 isdct_#{intel_ssd_tool_version}.400-1_amd64.deb" + execute "#{Chef::Config[:file_cache_path]}/Intel_MAS_CLI_Tool_#{intel_mas_tool_version}_Linux.zip" do + command "unzip Intel_MAS_CLI_Tool_#{intel_mas_tool_version}_Linux.zip intelmas_#{intel_mas_package_version}_amd64.deb" cwd Chef::Config[:file_cache_path] user "root" group "root" - not_if { ::File.exist?("#{Chef::Config[:file_cache_path]}/isdct_#{intel_ssd_tool_version}.400-1_amd64.deb") } + not_if { ::File.exist?("#{Chef::Config[:file_cache_path]}/intelmas_#{intel_mas_package_version}_amd64.deb") } + end + + dpkg_package "intelmas" do + version "#{intel_mas_package_version}" + source "#{Chef::Config[:file_cache_path]}/intelmas_#{intel_mas_package_version}_amd64.deb" end dpkg_package "isdct" do - version "#{intel_ssd_tool_version}-1" - source "#{Chef::Config[:file_cache_path]}/isdct_#{intel_ssd_tool_version}.400-1_amd64.deb" + action :purge end end @@ -380,6 +401,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 +467,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 +492,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]