X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/00ac1bd304754ca934889a92a75b622f1b3a40f0..e64f7cc9dc8fb6ca18f0b350ea2acd0c778814c8:/cookbooks/hardware/recipes/default.rb?ds=sidebyside diff --git a/cookbooks/hardware/recipes/default.rb b/cookbooks/hardware/recipes/default.rb index 66babcc94..793bda175 100644 --- a/cookbooks/hardware/recipes/default.rb +++ b/cookbooks/hardware/recipes/default.rb @@ -1,8 +1,8 @@ # -# Cookbook Name:: hardware +# Cookbook:: hardware # Recipe:: default # -# Copyright 2012, OpenStreetMap Foundation +# Copyright:: 2012, OpenStreetMap Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -84,13 +84,20 @@ when "TYAN Computer Corporation" units << "0" when "Supermicro" case product - when "H8DGU", "X9SCD", "X7DBU", "X7DW3", "X9DR7/E-(J)LN4F", "X9DR3-F", "X9DRW", "SYS-1028U-TN10RT+", "SYS-2028U-TN24R4T+", "Super Server" + when "H8DGU", "X9SCD", "X7DBU", "X7DW3", "X9DR7/E-(J)LN4F", "X9DR3-F", "X9DRW", "SYS-1028U-TN10RT+", "SYS-2028U-TN24R4T+", "SYS-1029P-WTRT", "Super Server" units << "1" else units << "0" end when "IBM" units << "0" +when "VMware, Inc." + package "open-vm-tools" + + service "open-vm-tools" do + action [:enable, :start] + supports :status => true, :restart => true + end end units.sort.uniq.each do |unit| @@ -267,7 +274,7 @@ if status_packages.include?("cciss-vol-status") end end -["cciss-vol-status", "mpt-status", "sas2ircu-status", "megaraid-status", "megaclisas-status", "aacraid-status"].each do |status_package| +%w[cciss-vol-status mpt-status sas2ircu-status megaraid-status megaclisas-status aacraid-status].each do |status_package| if status_packages.include?(status_package) package status_package @@ -301,38 +308,38 @@ disks = if node[:hardware][:disk] [] end -intel_ssds = disks.select { |d| d[:vendor] == "INTEL" && d[:model] =~ /^SSD/ } - -nvmes = if node[:hardware][:pci] - node[:hardware][:pci].values.select { |pci| pci[:driver] == "nvme" } - else - [] - end - -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.19" - - remote_file "#{Chef::Config[:file_cache_path]}/Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip" do - source "https://downloadmirror.intel.com/28639/eng/Intel_SSD_Data_Center_Tool_#{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 isdct_#{intel_ssd_tool_version}-1_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}-1_amd64.deb") } - end - - dpkg_package "isdct" do - version "#{intel_ssd_tool_version}-1" - source "#{Chef::Config[:file_cache_path]}/isdct_#{intel_ssd_tool_version}-1_amd64.deb" - end -end +# intel_ssds = disks.select { |d| d[:vendor] == "INTEL" && d[:model] =~ /^SSD/ } +# +# nvmes = if node[:hardware][:pci] +# node[:hardware][:pci].values.select { |pci| pci[:driver] == "nvme" } +# else +# [] +# end +# +# 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.21" +# +# remote_file "#{Chef::Config[:file_cache_path]}/Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip" do +# source "https://downloadmirror.intel.com/29115/eng/Intel_SSD_Data_Center_Tool_#{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 isdct_#{intel_ssd_tool_version}-1_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}-1_amd64.deb") } +# end +# +# dpkg_package "isdct" do +# version "#{intel_ssd_tool_version}-1" +# source "#{Chef::Config[:file_cache_path]}/isdct_#{intel_ssd_tool_version}-1_amd64.deb" +# end +# end disks = disks.map do |disk| next if disk[:state] == "spun_down" || %w[unconfigured failed].any?(disk[:status]) @@ -353,6 +360,9 @@ disks = disks.map do |disk| munin = "#{device}-#{Regexp.last_match(1)}:#{Regexp.last_match(2)}" end end + elsif disk[:device] =~ %r{^/dev/(nvme\d+)n\d+$} + device = Regexp.last_match(1) + munin = device elsif disk[:device] device = disk[:device].sub("/dev/", "") munin = device @@ -368,7 +378,7 @@ disks = disks.map do |disk| ] end -disks = disks.compact +disks = disks.compact.uniq if disks.count.positive? package "smartmontools" @@ -532,3 +542,20 @@ unless Dir.glob("/sys/class/hwmon/hwmon*").empty? notifies :run, "execute[/etc/sensors.d/chef.conf]" end end + +if node[:hardware][:shm_size] + execute "remount-dev-shm" do + action :nothing + command "/bin/mount -o remount /dev/shm" + user "root" + group "root" + end + + mount "/dev/shm" do + action :enable + device "tmpfs" + fstype "tmpfs" + options "rw,nosuid,nodev,size=#{node[:hardware][:shm_size]}" + notifies :run, "execute[remount-dev-shm]" + end +end