From c08dfe1bf43b2f97baeb0631323256b1a13e18bf Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 24 Jul 2014 18:29:03 +0100 Subject: [PATCH] Manage statically loaded modules --- cookbooks/hardware/attributes/default.rb | 13 ++++++++++++ cookbooks/hardware/recipes/default.rb | 21 +++++++++++++++++++ .../hardware/templates/default/modules.erb | 5 +++++ roles/shenron.rb | 5 +++++ roles/tyan-s7010.rb | 3 +++ 5 files changed, 47 insertions(+) create mode 100644 cookbooks/hardware/templates/default/modules.erb diff --git a/cookbooks/hardware/attributes/default.rb b/cookbooks/hardware/attributes/default.rb index 8b794cab7..46b5893a8 100644 --- a/cookbooks/hardware/attributes/default.rb +++ b/cookbooks/hardware/attributes/default.rb @@ -1,3 +1,4 @@ +default[:hardware][:modules] = [ "loop", "lp", "rtc" ] default[:hardware][:sensors] = {} if node[:dmi] and node[:dmi][:system] @@ -12,6 +13,14 @@ if node[:dmi] and node[:dmi][:system] end end +if Chef::Util.compare_versions(node[:kernel][:release], [3, 3]) < 0 + default[:hardware][:modules] |= [ "microcode" ] + + if node[:cpu]["0"][:vendor_id] == "GenuineIntel" + default[:hardware][:modules] |= [ "coretemp" ] + end +end + if node[:kernel] and node[:kernel][:modules] raidmods = node[:kernel][:modules].keys & ["cciss", "hpsa", "mptsas", "mpt2sas", "megaraid_mm", "megaraid_sas", "aacraid"] @@ -20,6 +29,10 @@ if node[:kernel] and node[:kernel][:modules] end end +if node[:kernel][:modules].include?("ipmi_si") + default[:hardware][:modules] |= [ "ipmi_devintf" ] +end + if File.exists?("/proc/xen") default[:hardware][:watchdog] = "xen_wdt" elsif node[:kernel][:modules].include?("i6300esb") diff --git a/cookbooks/hardware/recipes/default.rb b/cookbooks/hardware/recipes/default.rb index 689034a2a..0de7c69be 100644 --- a/cookbooks/hardware/recipes/default.rb +++ b/cookbooks/hardware/recipes/default.rb @@ -248,6 +248,27 @@ end end end +template "/etc/modules" do + source "modules.erb" + owner "root" + group "root" + mode 0644 +end + +if node[:lsb][:release].to_f <= 12.10 + service "module-init-tools" do + provider Chef::Provider::Service::Upstart + action :nothing + subscribes :start, "template[/etc/modules]" + end +else + service "kmod" do + provider Chef::Provider::Service::Upstart + action :nothing + subscribes :start, "template[/etc/modules]" + end +end + if node[:hardware][:watchdog] package "watchdog" diff --git a/cookbooks/hardware/templates/default/modules.erb b/cookbooks/hardware/templates/default/modules.erb new file mode 100644 index 000000000..9ba59d26d --- /dev/null +++ b/cookbooks/hardware/templates/default/modules.erb @@ -0,0 +1,5 @@ +# DO NOT EDIT - This file is being maintained by Chef + +<% node[:hardware][:modules].each do |m| -%> +<%= m %> +<% end -%> diff --git a/roles/shenron.rb b/roles/shenron.rb index d5fd177f8..191c6429f 100644 --- a/roles/shenron.rb +++ b/roles/shenron.rb @@ -16,6 +16,11 @@ default_attributes( :max_requests_per_child => 2000 } }, + :hardware => { + :modules => [ + "it87" + ], + }, :networking => { :interfaces => { :external_ipv4 => { diff --git a/roles/tyan-s7010.rb b/roles/tyan-s7010.rb index 156d672d7..583ad5d9b 100644 --- a/roles/tyan-s7010.rb +++ b/roles/tyan-s7010.rb @@ -3,6 +3,9 @@ description "Role applied to machines using the Tyan S710 motherboard" default_attributes( :hardware => { + :modules => [ + "i2c_i801", "jc42", "w83793" + ], :sensors => { "jc42-*" => { :temps => { -- 2.43.2