Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dell/openmanage-puppet
Puppet modules for iDRAC Redfish REST APIs
https://github.com/dell/openmanage-puppet
idrac openmanage poweredge puppet puppet-module redfish
Last synced: 22 days ago
JSON representation
Puppet modules for iDRAC Redfish REST APIs
- Host: GitHub
- URL: https://github.com/dell/openmanage-puppet
- Owner: dell
- License: apache-2.0
- Created: 2020-11-10T18:37:23.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2023-10-06T02:30:57.000Z (over 1 year ago)
- Last Synced: 2024-11-13T18:13:31.376Z (3 months ago)
- Topics: idrac, openmanage, poweredge, puppet, puppet-module, redfish
- Language: Ruby
- Homepage:
- Size: 43 KB
- Stars: 1
- Watchers: 3
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
## 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
* https://rubygems.org/gems/redfish_client### 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'
```
2. 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,
}
}
```
3. A requirement of the device manager module is to have a system user called pe-user. ``` useradd pe-user```
4. 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
5. 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 currently not officially supported by Dell EMC.To report problems or provide feedback https://github.com/dell/openmanage-puppet/issues
## License
Copyright Dell EMC