This module supports standards-based implementations of Redfish for out-of-band device management. The Redfish standard is a suite of specifications that deliver an industry standard protocol providing a RESTful interface for the management of servers, storage, networking, and converged infrastructure.
https://en.wikipedia.org/wiki/Redfish_(specification)
- Enable pluginsync
- Hostname or IP Address for Out-of-Band Controller (iDRAC/iLO)
- Install device_manager module
puppet module install puppetlabs-device_manager
- Install redfish_client Ruby Gem
- The goal is to publish this to Puppet Forge as an official module. Until that time you can manually install the module for testing.
- Manual installation:
mkdir /etc/puppetlabs/code/environments/production/modules/redfish
unzip openmanage-puppet-main.zip
cd openmanage-puppet-main
rsync -av . /etc/puppetlabs/code/environments/production/modules/redfish/
To get started with agentless setup, the module must be installed in your puppet enterprise enviroment
- From Puppet Enterprise Web UI, go to Setup >> Inventory
- Select network devices and select redfish as the device type
- It will ask for:
- host (example of host is https://hostname)
- user
- password
- Find your node under Inspect >> Nodes and click run puppet
- You can now inspect the facts
- You can add a classification for this remote node on your site.pp or using profiles and roles as you wish.
You can also choose to run the values from a proxy agent. This means another existing node can control your host.
- Copy and modify the code below and classify a node with that information. The details can be hardcoded under site.pp or the information can come from hiera.
Example 1: site.pp
device_manager {
'node01-idrac':
type => 'redfish',
credentials => {
host => 'https://192.168.1.100',
username => 'admin',
password => 'password',
},
}
Example 2: /etc/puppetlabs/code/environments/production/data/nodes/proxyhost.example.com.yaml
device_manager::devices:
node01-idrac:
type: 'redfish'
credentials:
hostname: 'https://192.168.1.100'
username: 'root'
password: 'calvin'
node02-idrac:
type: 'redfish'
credentials:
hostname: 'https://node02-idrac.example.com'
username: 'root'
password: 'calvin'
- Proxy Requirements
a. You will need the device manager module to make use of the device manager. https://forge.puppet.com/puppetlabs/device_manager
puppet module install puppetlabs-device_manager
b. You will need to install the redfish_client Ruby Gem. https://rubygems.org/gems/redfish_client
node 'proxynode.example.com' {
include device_manager::devices
package { 'redfish_client' :
provider => 'puppet_gem',
ensure => installed,
}
}
- A requirement of the device manager module is to have a system user called pe-user.
useradd pe-user
- Once the file has been created, you can run puppet from your proxy agent using cronjobs or from Puppet Enterprise as tasks. Refer to https://forge.puppet.com/puppetlabs/device_manager#orchestration
- You can now apply any puppet manifests or make use of puppet device to run puppet on the fly for your appropriate remote device.
# Applies redfish attributes
redfish_attribute { 'AssetTag':
value => 'dell'
}
redfish_attribute { 'WriteCache':
value => 'Enabled'
}
# Creates bios config job (Will report error if "No pending data present to create a Configuration job")
redfish_job {
'current': apply => 'yes'
}
# Creates bios job and reboots
redfish_reboot {'current'
reboot => true
}
# Sets power state
redfish_power {'current'
state => 'on' # Enum[on, force_off, force_restart, graceful_shutdown, nmi]
}
# Upgrades firmware
redfish_firmware {'current'
url => 'http://server.example.com/FIRMWARE.EXE'
}
Example Manifest
node 'node01-idrac','node02-idrac' {
# Set Attributes
redfish_attribute { 'AssetTag': value => 'Dell0001' }
redfish_attribute { 'BootMode': value => 'Bios' }
redfish_attribute { 'AcPwrRcvry': value => 'On' }
redfish_attribute { 'AcPwrRcvryDelay': value => 'Random' }
# Creates BIOS Config Job (Submitting a Configuration Job is a requirement on Dell Servers)
redfish_job {'current': apply => 'yes' }
# Reboot Server
redfish_power {'current': state => 'force_restart' }
}
# Run against all devices (This will generate certificate requests)
puppet device -v
# Run against target device
puppet device --target node01-idrac -v
# Get specific resource attribute
puppet device --target node01-idrac -v --resource redfish_attribute AssetTag
This code is provided as-is and currently not officially supported by Dell EMC.
To report problems or provide feedback https://github.com/dell/openmanage-puppet/issues
Copyright Dell EMC