Forge Home


manages the OpenIPMI package

Joshua Hoblitt



64,994 latest version

4.6 quality score

Version information

  • 2.3.0 (latest)
  • 2.2.0
  • 2.1.0
  • 2.0.0
  • 1.2.0
  • 1.1.1
  • 1.1.0
  • 1.0.1
  • 1.0.0
released Jun 30th 2016
This version is compatible with:
  • RedHat

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this declaration to your Puppetfile:

mod 'jhoblitt-ipmi', '2.3.0'
Learn more about managing modules with a Puppetfile

Add this module to a Bolt project:

bolt module add jhoblitt-ipmi
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install jhoblitt-ipmi --version 2.3.0

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.



jhoblitt/ipmi — version 2.3.0 Jun 30th 2016

Puppet ipmi Module

Build Status

Table of Contents

  1. Overview
  2. Description
  3. Usage
  4. Additional Facts
  5. Limitations
  6. Versioning
  7. Support
  8. Contributing
  9. See Also


Manages the OpenIPMI package


Installs the OpemIPMI package, provides IPMI facts in a format compatible with The Foreman's BMC features and enables the ipmi service. The latter loads the kernel drivers needed for communicating with the BMC from user space.



   include ipmi

Create a user with admin privileges (default):

   ipmi::user { 'newuser1':
     user     => 'newuser1',
     password => 'password1',
     user_id  => 4,

Create a user with operator privileges:

   ipmi::user { 'newuser2':
     user     => 'newuser2',
     password => 'password2',
     priv     => 3,
     user_id  => 5,

Configure a static ip on IPMI lan channel 1:

   ipmi::network { 'lan1':
     type        => 'static',
     ip          => '',
     netmask     => '',
     gateway     => '',

Configure IPMI lan channel 1 to DHCP:

   ipmi::network { 'dhcp': }

Configure IPMI snmp string on lan channel 1:

   ipmi::snmp { 'lan1':
     snmp        => 'secret',
     lan_channel => 1,



# defaults
class { 'ipmi':
  service_ensure         => 'running', # default is 'running'
  ipmievd_service_ensure => 'running', # default is 'stopped'
  watchdog               => true,      # default is false

String defaults to: running

Possible values: running, stopped

Controls the state of the ipmi service.


String defaults to: stopped

Possible values: running, stopped

Controls the state of the ipmievd service.


Boolean defaults to: false

Controls whether the IPMI watchdog is enabled.

Defined Resources


# defaults
ipmi::user { 'newuser':
  user     => 'root',
  priv     => 4,           # Administrator
  user_id  => 3,

String defaults to: root

Controls the username of the user to be created.


String - required field

Controls the password of the user to be created.


Integer defaults to: 4

Possible values: 4 - ADMINISTRATOR, 3 - OPERATOR, 2 - USER, 1 - CALLBACK

Controls the rights of the user to be created.


Integer defaults to: 3

The user id of the user to be created. Should be unique from existing users. On SuperMicro IPMI, user id 2 is reserved for the ADMIN user.


# defaults
ipmi::network { 'lan1':
  type        => 'dhcp',
  ip          => '',
  netmask     => '',
  gateway     => '',
  lan_channel => 1,

String defaults to: dhcp

Possible values: dhcp, static

Controls the if IP will be from DHCP or Static.


String defaults to:

Controls the IP of the IPMI network.


String defaults to:

Controls the subnet mask of the IPMI network.


String defaults to:

Controls the gateway of the IPMI network.


Integer defaults to: 1

Controls the lan channel of the IPMI network to be configured.


# defaults
ipmi::snmp { 'lan1':
  snmp        => 'public',
  lan_channel => 1,

String defaults to: public

Controls the snmp string of the IPMI network interface.


Integer defaults to: 1

Controls the lan channel of the IPMI network on which snmp is to be configured.

Additional Facts

This module provides additional facts for Facter with the following format:

ipmi1_gateway =>
ipmi1_ipaddress =>
ipmi1_ipaddress_source => Static Address
ipmi1_macaddress => 00:30:48:c9:64:2a
ipmi1_subnet_mask =>

where the 1 in ipmi1 corresponds to the channel according to ipmitool lan print.

Additionally for compatibility with The Foreman, the first IPMI interface (i.e. the one from ipmi lan print 1) gets all facts repeated as just ipmi_foo:

ipmi_gateway =>
ipmi_ipaddress =>
ipmi_ipaddress_source => Static Address
ipmi_macaddress => 00:30:48:c9:64:2a
ipmi_subnet_mask =>


At present, only support for RedHat and Debian distributions has been implemented.

Adding other Linux distrubtions should be trivial.

Tested Platforms

  • el5.x
  • el6.x
  • el7.x
  • Debian
  • Ubuntu

Puppet Version Compatibility

Versions Puppet 2.7 Puppet 3.x Puppet 4.x
1.x yes yes no
2.x no yes yes


This module is versioned according to the Semantic Versioning 2.0.0 specification.


Please log tickets and issues at github


  1. Fork it on github
  2. Make a local clone of your fork
  3. Create a topic branch. Eg, feature/mousetrap
  4. Make/commit changes
    • Commit messages should be in imperative tense
    • Check that linter warnings or errors are not introduced - bundle exec rake lint
    • Check that Rspec-puppet unit tests are not broken and coverage is added for new features - bundle exec rake spec
    • Documentation of API/features is updated as appropriate in the README
    • If present, beaker acceptance tests should be run and potentially updated - bundle exec rake beaker
  5. When the feature is complete, rebase / squash the branch history as necessary to remove "fix typo", "oops", "whitespace" and other trivial commits
  6. Push the topic branch to github
  7. Open a Pull Request (PR) from the topic branch onto parent repo's master branch

See Also