Use the os Chef InSpec audit resource to test the platform on which the system is running.
This resource is distributed along with Chef InSpec itself. You can use it automatically.
This resource first became available in v1.0.0 of InSpec.
An os resource block declares the platform to be tested. The platform may specified via matcher or control block name. For example, using a matcher:
describe os.family do
it { should eq 'platform_family_name' }
end
'platform_family_name' (a string) is one of aix, bsd, darwin, debian, hpux, linux, redhat, solaris, suse, unix, or windows
The parameters available to os are:
:name - the operating system name, such as centos
:family - the operating system family, such as redhat
:release - the version of the operating system, such as 7.3.1611
:arch - the architecture of the operating system, such as x86_64
The following examples show how to use this Chef InSpec audit resource.
describe os.family do
it { should eq 'redhat' }
end
describe os.family do
it { should eq 'debian' }
end
describe os.family do
it { should eq 'windows' }
end
For a full list of available matchers, please visit our matchers page.
The os audit resource includes a collection of helpers that enable more granular testing of platforms, platform names, architectures, and releases. Use any of the following platform-specific helpers to test for specific platforms:
aix?bsd? (including Darwin, FreeBSD, NetBSD, and OpenBSD)darwin?debian?hpux?linux? (including Alpine Linux, Amazon Linux, ArchLinux, CoreOS, Exherbo, Fedora, Gentoo, and Slackware)redhat? (including CentOS)solaris? (including Nexenta Core, OmniOS, Open Indiana, Solaris Open, and SmartOS)suse?unix?windows?For example, to test for Darwin use:
describe os.bsd? do
it { should eq true }
end
To test for Windows use:
describe os.windows? do
it { should eq true }
end
and to test for Redhat use:
describe os.redhat? do
it { should eq true }
end
Use the following helpers to test for operating system names, releases, and architectures:
describe os.name do
it { should eq 'foo' }
end
describe os.release do
it { should eq 'foo' }
end
describe os.arch do
it { should eq 'foo' }
end
Use os.family to enable more granular testing of platforms, platform names, architectures, and releases. Use any of the following platform-specific names to test for specific platforms:
aixbsd For platforms that are part of the Berkeley OS family darwin, freebsd, netbsd, and openbsd.debianhpuxlinux. For platforms that are part of the Linux family alpine, amazon, arch, coreos, exherbo, fedora, gentoo, and slackware.redhat. For platforms that are part of the Redhat family centos.solaris. For platforms that are part of the Solaris family nexentacore, omnios, openindiana, opensolaris, and smartos.suseunixwindowsFor example, both of the following tests should have the same result:
if os.family == 'debian'
describe port(69) do
its('processes') { should include 'in.tftpd' }
end
elsif os.family == 'redhat'
describe port(69) do
its('processes') { should include 'xinetd' }
end
end
if os.debian?
describe port(69) do
its('processes') { should include 'in.tftpd' }
end
elsif os.redhat?
describe port(69) do
its('processes') { should include 'xinetd' }
end
end
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/os/