Skip to content
This repository was archived by the owner on Apr 24, 2026. It is now read-only.

dell/openmanage-puppet

Repository files navigation

⛔️ ARCHIVED: OpenManage-Puppet

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.

Why was this archived?

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.

Can I still use this?

Yes! The code is still available under the original license. If you wish to continue development, feel free to fork the repository.

Description

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)

Setup

Requirements

  • 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

Installation

  • 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/

Getting Started

Agentless

To get started with agentless setup, the module must be installed in your puppet enterprise enviroment

  1. From Puppet Enterprise Web UI, go to Setup >> Inventory
  2. Select network devices and select redfish as the device type
  3. It will ask for:
    1. host (example of host is https://hostname)
    2. user
    3. password
  4. Find your node under Inspect >> Nodes and click run puppet
  5. You can now inspect the facts
  6. You can add a classification for this remote node on your site.pp or using profiles and roles as you wish.

Proxy Agent OPTIONAL

You can also choose to run the values from a proxy agent. This means another existing node can control your host.

  1. 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'
  1. 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,
    }
}
  1. A requirement of the device manager module is to have a system user called pe-user. useradd pe-user
  2. 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
  3. You can now apply any puppet manifests or make use of puppet device to run puppet on the fly for your appropriate remote device.

Usage

# 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' } 
}

Using Devices

# 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

Support

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

License

Copyright Dell EMC

About

Puppet modules for iDRAC Redfish REST APIs

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages