Ohai convention for hardware details?

So there’s a pretty standard place for people to look for information about
a node’s hypervisor characteristics (is it VMware? Openstack?
Cloudstack?). I’m thinking of cloud_provider.

And we agree that it’s so important to know what kind of platform we’re on
that we have platform_family.

But there’s not really a standard for figuring out what our hardware is.

On Linux, we run dmidecode, cover our eyes and jam that into one structure.

On OS X, we run system profiler, cover our eyes and jam that into a
different structure.

On Windows, _________________. (I haven’t tried yet. I’m afraid to.)

I think this is going to get more important as people use Chef on different
kinds of physical hardware. It would be great if there was some kind of
standard for hardware that Ohai plugins on different platforms attempted to
conform to - something like:

‘hardware’: {
‘manufacturer’: ‘Falken Robotics’,
‘model’: ‘WOPR’,
‘revision’: ‘01’
}

Is anyone interested in/already working on this? Is it on someone’s
roadmap already? Or did someone try working on this and give up because
… ?

We run dmidecode on windows using dmidecode.exe at

This actually works very well. We have a custom ohai plugin that solves
https://tickets.opscode.com/browse/OHAI-333 (I don't know why we didn't do
a PR yet, I'll check).

DMI information is the standard for hardware discovery IMHO we should keep
using it.
On Jun 30, 2014 11:43 PM, "steve ." leftathome@gmail.com wrote:

So there's a pretty standard place for people to look for information
about a node's hypervisor characteristics (is it VMware? Openstack?
Cloudstack?). I'm thinking of cloud_provider.

And we agree that it's so important to know what kind of platform we're on
that we have platform_family.

But there's not really a standard for figuring out what our hardware is.

On Linux, we run dmidecode, cover our eyes and jam that into one structure.

On OS X, we run system profiler, cover our eyes and jam that into a
different structure.

On Windows, _________________. (I haven't tried yet. I'm afraid to.)

I think this is going to get more important as people use Chef on
different kinds of physical hardware. It would be great if there was some
kind of standard for hardware that Ohai plugins on different platforms
attempted to conform to - something like:

'hardware': {
'manufacturer': 'Falken Robotics',
'model': 'WOPR',
'revision': '01'
}

Is anyone interested in/already working on this? Is it on someone's
roadmap already? Or did someone try working on this and give up because
... ?

That's great - it looks like Windows and Linux use the same behavior, but
Darwin apparently can't use dmidecode as it doesn't expose the necessary
memory regions.

Not to mention other operating systems...

On Mon, Jun 30, 2014 at 2:57 PM, Maxime Brugidou maxime.brugidou@gmail.com
wrote:

We run dmidecode on windows using dmidecode.exe at
DmiDecode for Windows

This actually works very well. We have a custom ohai plugin that solves
https://tickets.opscode.com/browse/OHAI-333 (I don't know why we didn't
do a PR yet, I'll check).

DMI information is the standard for hardware discovery IMHO we should keep
using it.
On Jun 30, 2014 11:43 PM, "steve ." leftathome@gmail.com wrote:

So there's a pretty standard place for people to look for information
about a node's hypervisor characteristics (is it VMware? Openstack?
Cloudstack?). I'm thinking of cloud_provider.

And we agree that it's so important to know what kind of platform we're
on that we have platform_family.

But there's not really a standard for figuring out what our hardware is.

On Linux, we run dmidecode, cover our eyes and jam that into one
structure.

On OS X, we run system profiler, cover our eyes and jam that into a
different structure.

On Windows, _________________. (I haven't tried yet. I'm afraid to.)

I think this is going to get more important as people use Chef on
different kinds of physical hardware. It would be great if there was some
kind of standard for hardware that Ohai plugins on different platforms
attempted to conform to - something like:

'hardware': {
'manufacturer': 'Falken Robotics',
'model': 'WOPR',
'revision': '01'
}

Is anyone interested in/already working on this? Is it on someone's
roadmap already? Or did someone try working on this and give up because
... ?

I don't know about other platforms but we could try to standardize all of
them to SMBIOS/DMI information.

Darwin doesn't expose /dev/mem but apparently you can dump SMBIOS data and
read it with dmidecode too to get the same output. Is this a good solution?

Anyway if we try to create yet another attribute for hardware we are going
to duplicate all the primitives in DMI: dmi.system.manufacturer
dmi.system.product_name dmi.chassis.serial_nber
dmi.baseboard.serial_number... I am not against it but this seem very
redundant.
On Jul 1, 2014 1:58 AM, "steve ." leftathome@gmail.com wrote:

That's great - it looks like Windows and Linux use the same behavior, but
Darwin apparently can't use dmidecode as it doesn't expose the necessary
memory regions.

Not to mention other operating systems...

On Mon, Jun 30, 2014 at 2:57 PM, Maxime Brugidou <
maxime.brugidou@gmail.com> wrote:

We run dmidecode on windows using dmidecode.exe at
DmiDecode for Windows

This actually works very well. We have a custom ohai plugin that solves
https://tickets.opscode.com/browse/OHAI-333 (I don't know why we didn't
do a PR yet, I'll check).

DMI information is the standard for hardware discovery IMHO we should
keep using it.
On Jun 30, 2014 11:43 PM, "steve ." leftathome@gmail.com wrote:

So there's a pretty standard place for people to look for information
about a node's hypervisor characteristics (is it VMware? Openstack?
Cloudstack?). I'm thinking of cloud_provider.

And we agree that it's so important to know what kind of platform we're
on that we have platform_family.

But there's not really a standard for figuring out what our hardware is.

On Linux, we run dmidecode, cover our eyes and jam that into one
structure.

On OS X, we run system profiler, cover our eyes and jam that into a
different structure.

On Windows, _________________. (I haven't tried yet. I'm afraid to.)

I think this is going to get more important as people use Chef on
different kinds of physical hardware. It would be great if there was some
kind of standard for hardware that Ohai plugins on different platforms
attempted to conform to - something like:

'hardware': {
'manufacturer': 'Falken Robotics',
'model': 'WOPR',
'revision': '01'
}

Is anyone interested in/already working on this? Is it on someone's
roadmap already? Or did someone try working on this and give up because
... ?