On Tue, Apr 26, 2011 at 09:38:25AM -0400, [email protected] wrote:
>Forum: Cfengine Help
>Subject: Re: Cfengine Help: rather complex scenario (pkg install+configure -
>if necessary)
>Author: ticketo
>Link to topic: https://cfengine.com/forum/read.php?3,21559,21593#msg-21593
>
>If it's about chapter "2.1.2 Variation in hosts" then it's a bit simplistic.
>It would mean that I have to manually change the cfengine configuration if I
>add just one more host - and manually keep track of every change. I think i
>saw someone announcing classes based on lspci's output (or similar). This
>would help a lot.
I have a few bundles that I use for hardware-based stuff like this,
specifically including certain RAID controllers. Below are snippets of
what I use on some systems.
bundle agent hardware {
vars:
'generic_hw_packages' slist => {
'smartmontools',
};
commands:
linux::
"/sbin/lspci -v -v > ${g.lspcifile}"
contain => quiet_in_shell,
action => if_elapsed(600),
classes => if_ok('lspci_data_exists'),
handle => 'hardware_lspci_generate';
"/usr/sbin/dmidecode > ${g.dmidecodefile}"
contain => quiet_in_shell,
action => if_elapsed(600),
classes => if_ok('dmifile_data_exists'),
handle => 'hardware_dmi_generate';
files:
linux::
"${g.lspcifile}"
perms => paf;
"${g.dmidecodefile}"
perms => paf;
packages:
linux::
"${generic_hw_packages}"
package_policy => "add",
package_method => yum,
package_architectures => { "x86_64"};
reports:
hardware_VendorA.(verbose|inform)::
"Host [${sys.uqhost}] is made by VendorB.";
hardware_VendorA.(verbose|inform)::
"Host [${sys.uqhost}] is made by VendorB.";
hardware_VMware.(verbose|inform)::
"Host [${sys.uqhost}] is a VMware VM.";
hardware_KVM.(verbose|inform)::
"Host [${sys.uqhost}] is a KVM VM.";
hardware_OVZ.(verbose|inform)::
"Host [${sys.uqhost}] is a OpenVZ VM.";
}
bundle common g {
vars:
'lspcifile' string => "/root/lspci.dat";
'dmidecodefile' string => "/root/dmidecode.dat";
classes:
'lspci_data_exists' expression => fileexists("${g.lspcifile}");
'dmidecode_data_exists' expression => fileexists("${g.dmidecodefile}");
lspci_data_exists::
'hardware_VendorA' expression => regline('^.*Product
Name:.+VendorA.*', "${g.dmidecodefile}");
'hardware_VendorB' expression => regline('^.*Product
Name:.+VendorB.*', "${g.dmidecodefile}");
'hardware_IDE' expression => regline('^.*IDE.*',
"${g.lspcifile}");
'hardware_SATA' expression => regline('^.*SATA.*',
"${g.lspcifile}");
'hardware_VMware' expression => regline('^.*VMware.*',
"${g.lspcifile}");
'hardware_KVM' expression => regline('^.*Virtio memory
balloon.*', "${g.lspcifile}");
'hardware_OVZ' expression => isplain('/prox/vz');
'hardware_VM' or => { 'hardware_VMware',
'hardware_KVM',
'hardware_OVZ',
};
}
--
Jesse Becker
NHGRI Linux support (Digicon Contractor)
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine