{"id":20110755,"url":"https://github.com/dell/openmanage-puppet","last_synced_at":"2025-03-02T18:27:28.287Z","repository":{"id":110751684,"uuid":"311751789","full_name":"dell/openmanage-puppet","owner":"dell","description":"Puppet modules for iDRAC Redfish REST APIs","archived":false,"fork":false,"pushed_at":"2023-10-06T02:30:57.000Z","size":44,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-13T05:42:18.051Z","etag":null,"topics":["idrac","openmanage","poweredge","puppet","puppet-module","redfish"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dell.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-11-10T18:37:23.000Z","updated_at":"2022-09-06T13:25:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"7a54c94e-c0cf-4d66-8a5a-5cf61d926da4","html_url":"https://github.com/dell/openmanage-puppet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dell%2Fopenmanage-puppet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dell%2Fopenmanage-puppet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dell%2Fopenmanage-puppet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dell%2Fopenmanage-puppet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dell","download_url":"https://codeload.github.com/dell/openmanage-puppet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241550669,"owners_count":19980792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["idrac","openmanage","poweredge","puppet","puppet-module","redfish"],"created_at":"2024-11-13T18:13:34.640Z","updated_at":"2025-03-02T18:27:28.260Z","avatar_url":"https://github.com/dell.png","language":"Ruby","readme":"## Description\n\nThis 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.\n\nhttps://en.wikipedia.org/wiki/Redfish_(specification)\n\n## Setup\n\n### Requirements\n\n* Enable *pluginsync*\n* Hostname or IP Address for Out-of-Band Controller (iDRAC/iLO)\n* Install *device_manager* module \n    * `puppet module install puppetlabs-device_manager`\n* Install *redfish_client* Ruby Gem\n    * https://rubygems.org/gems/redfish_client\n\n### Installation\n\n* The goal is to publish this to Puppet Forge as an official module. Until that time you can manually install the module for testing.\n* Manual installation:\n```\nmkdir /etc/puppetlabs/code/environments/production/modules/redfish\nunzip openmanage-puppet-main.zip\ncd openmanage-puppet-main\nrsync -av . /etc/puppetlabs/code/environments/production/modules/redfish/\n```\n\n## Getting Started\n\n#### Agentless\n\nTo get started with agentless setup, the module must be installed in your puppet enterprise enviroment\n1. From Puppet Enterprise Web UI, go to Setup \u003e\u003e Inventory\n2. Select network devices and select redfish as the device type\n3. It will ask for: \n    1. host (example of host is https://hostname)\n    2. user\n    3. password\n4. Find your node under Inspect \u003e\u003e Nodes and click run puppet\n5. You can now inspect the facts\n6. You can add a classification for this remote node on your site.pp or using profiles and roles as you wish.\n\n#### Proxy Agent **OPTIONAL**\n\nYou can also choose to run the values from a proxy agent. This means another existing node can control your host. \n\n1. 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.\n\n**Example 1: site.pp**\n```\ndevice_manager { \n    'node01-idrac':\n        type        =\u003e 'redfish',\n        credentials =\u003e {\n          host     =\u003e 'https://192.168.1.100',\n          username =\u003e 'admin',\n          password =\u003e 'password',\n        },\n}\n```\n**Example 2: /etc/puppetlabs/code/environments/production/data/nodes/proxyhost.example.com.yaml**\n```\ndevice_manager::devices:\n    node01-idrac:\n        type: 'redfish'\n        credentials:\n            hostname: 'https://192.168.1.100'\n            username: 'root'\n            password: 'calvin'\n    node02-idrac:\n        type: 'redfish'\n        credentials:\n            hostname: 'https://node02-idrac.example.com'\n            username: 'root'\n            password: 'calvin'\n```\n2. Proxy Requirements\n    a. You will need the device manager module to make use of the device manager. https://forge.puppet.com/puppetlabs/device_manager\n```puppet module install puppetlabs-device_manager```\n    b. You will need to install the *redfish_client* Ruby Gem. https://rubygems.org/gems/redfish_client\n```\nnode 'proxynode.example.com'  {\n    include device_manager::devices\n    package { 'redfish_client' :\n        provider =\u003e 'puppet_gem',\n        ensure   =\u003e installed,\n    }\n}\n```\n3. A requirement of the device manager module is to have a system user called pe-user.  ``` useradd pe-user```\n4. 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\n5. You can now apply any puppet manifests or make use of puppet device to run puppet on the fly for your appropriate remote device.\n\n## Usage\n\n```\n# Applies redfish attributes\nredfish_attribute { 'AssetTag':\n    value =\u003e 'dell'\n}\n\nredfish_attribute { 'WriteCache':\n    value =\u003e 'Enabled'\n}\n\n# Creates bios config job (Will report error if \"No pending data present to create a Configuration job\")\nredfish_job {\n    'current': apply =\u003e 'yes' \n}\n\n# Creates bios job and reboots \nredfish_reboot {'current'\n    reboot =\u003e true\n}\n\n# Sets power state\nredfish_power {'current'\n    state =\u003e 'on' # Enum[on, force_off, force_restart, graceful_shutdown, nmi]\n}\n\n# Upgrades firmware\nredfish_firmware {'current'\n    url =\u003e 'http://server.example.com/FIRMWARE.EXE'\n}\n```\n\n**Example Manifest**\n```\nnode 'node01-idrac','node02-idrac' {\n    # Set Attributes\n    redfish_attribute { 'AssetTag': value =\u003e 'Dell0001' }\n    redfish_attribute { 'BootMode': value =\u003e 'Bios' }\n    redfish_attribute { 'AcPwrRcvry': value =\u003e 'On' }\n    redfish_attribute { 'AcPwrRcvryDelay': value =\u003e 'Random' }\n\n    # Creates BIOS Config Job (Submitting a Configuration Job is a requirement on Dell Servers)\n    redfish_job {'current': apply =\u003e 'yes' }\n\n    # Reboot Server\n    redfish_power {'current': state =\u003e 'force_restart' } \n}\n```\n\n## Using Devices\n```\n# Run against all devices (This will generate certificate requests)\npuppet device -v\n# Run against target device\npuppet device --target node01-idrac -v\n# Get specific resource attribute\npuppet device --target node01-idrac -v --resource redfish_attribute AssetTag\n```\n\n## Support\nThis code is provided as-is and currently not officially supported by Dell EMC.\n\nTo report problems or provide feedback https://github.com/dell/openmanage-puppet/issues\n\n## License\n\nCopyright Dell EMC","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdell%2Fopenmanage-puppet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdell%2Fopenmanage-puppet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdell%2Fopenmanage-puppet/lists"}