Skip to main content

interface resource

Use the interface Chef InSpec audit resource to test basic network adapter properties, such as name, status, IP addresses, and link speed (in MB/sec).

  • On Linux platforms, /sys/class/net/#{iface} is used as source
  • On the Windows platform, the Get-NetAdapter cmdlet is used as source
  • On BSD and MacOS platforms, the ifconfig command is used as source. Link speed may not be available.

Availability

Install

This resource is distributed with Chef InSpec and is automatically available for use.

Version

This resource first became available in v1.0.0 of Chef InSpec.

Syntax

An interface resource block declares network interface properties to be tested:

describe interface('eth0') do
  it { should be_up }
  its('speed') { should eq 1000 }
  its('name') { should eq eth0 }
  its('ipv4_addresses') { should include '10.0.0.5' }
end

Properties

ipv4_address

Returns the first ipv4_addresses entry as a String. Note: this property is incompatible with ServerSpec, which returns the value including the CIDR range, such as ‘10.0.0.5/32’.

its('ipv4_address') { should eq '10.0.0.5' }

ipv4_addresses

The ipv4_addresses property returns an Array of IPv4 addresses as Strings. You may then test if the specified address exists on the named network interface:

its('ipv4_addresses') { should include '127.0.0.1' }

ipv4_addresses_netmask

The ipv4_addresses_netmask property returns an Array of Strings with each containing the IPv4 address, a slash, and the netmask. You may then test if the specified address and netmask exists on the named network interface:

its('ipv4_addresses_netmask') { should include '127.0.0.1/255.0.0.0' }

ipv6_address

Returns the first ipv6_address entry. Note: this property is incompatible with ServerSpec, which returns the value including the CIDR range.

its('ipv6_address') { should eq '2089:98b::faeb' }

ipv6_addresses

The ipv6_addresses property returns an Array of Strings and tests if the specified address exists on the named network interface:

its('ipv6_addresses') { should include '::1' }

ipv4_cidrs

The ipv4_cidrs property returns an Array of Strings and tests if the specified address and netmask combination exists on the named network interface:

its('ipv4_cidrs') { should include '127.0.0.1/8' }

ipv6_cidrs

The ipv6_cidrs property returns an Array of Strings and tests if the specified address and netmask combination exists on the named network interface:

its('ipv6_cidrs') { should include '::1/128' }

name

The name property returns the name of the interface:

its('name') { should eq 'eth0' }

speed

The speed property tests the speed of the network interface, in MB/sec. Note: On BSD and MacOS platforms, this value may be nil, because it difficult to obtain reliably.

its('speed') { should eq 1000 }

Matchers

For a full list of available matchers, see our Universal Matchers page.

This resource has the following special matchers.

be_up

The be_up matcher tests if the network interface is available:

it { should be_up }

exist

The exist matcher tests if the network interface exists:

it { should exist }

have_an_ipv4_address

The have_an_ipv4_address matcher tests if the network interface has any IPv4 addresses assigned:

it { should have_an_ipv4_address }

have_an_ipv6_address

The have_an_ipv6_address matcher tests if the network interface has any IPv6 addresses assigned:

it { should have_an_ipv6_address }
Edit this page on GitHub

Thank you for your feedback!

×