Note This repository has been archived and is no longer being maintained or updated. In the near future this repository will be fully deprecated. Please consider using other Redfish integrations, such as Terraform Redfish Provider and OpenManage Ansible Collection.
This repository has been archived because our development efforts have shifted to better align with current industry trends and organizational priorities. We are now focusing our resources on strategic initiatives that offer more long-term value for our infrastructure goals.
Yes! The code is still available under the original license. If you wish to continue development, feel free to fork the repository.
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_managerb. 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 not officially supported by Dell Technologies.
To report problems or provide feedback https://github.com/dell/openmanage-puppet/issues
Copyright Dell EMC