mirror of
https://github.com/inspec/inspec
synced 2024-11-27 15:10:44 +00:00
bb538bfb5c
The dot notation is supported for family on the os resource. That is by far easier to type out and use. Also fixes that the platform names returned are Strings and not Symbols. Signed-off-by: Franklin Webber <franklin@chef.io>
141 lines
3.7 KiB
Text
141 lines
3.7 KiB
Text
---
|
|
title: About the os Resource
|
|
platform: os
|
|
---
|
|
|
|
# os
|
|
|
|
Use the `os` InSpec audit resource to test the platform on which the system is running.
|
|
|
|
<br>
|
|
|
|
## Syntax
|
|
|
|
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`
|
|
<br>
|
|
|
|
## Examples
|
|
|
|
The following examples show how to use this InSpec audit resource.
|
|
|
|
### Test for RedHat
|
|
|
|
describe os.family do
|
|
it { should eq 'redhat' }
|
|
end
|
|
|
|
### Test for Ubuntu
|
|
|
|
describe os.family do
|
|
it { should eq 'debian' }
|
|
end
|
|
|
|
### Test for Microsoft Windows
|
|
|
|
describe os.family do
|
|
it { should eq 'windows' }
|
|
end
|
|
|
|
<br>
|
|
|
|
## Matchers
|
|
|
|
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
|
|
### os.family? Helpers
|
|
|
|
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
|
|
|
|
### os.family names
|
|
|
|
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:
|
|
|
|
* `aix`
|
|
* `bsd` For platforms that are part of the Berkeley OS family `darwin`, `freebsd`, `netbsd`, and `openbsd`.
|
|
* `debian`
|
|
* `hpux`
|
|
* `linux`. 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`.
|
|
* `suse`
|
|
* `unix`
|
|
* `windows`
|
|
|
|
For 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
|