Forge Home


Configures and manages Out-of-band management controller.


1,064 latest version

5.0 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Version information

  • 0.1.12 (latest)
  • 0.1.11
  • 0.1.10
  • 0.1.9
  • 0.1.8
  • 0.1.7
  • 0.1.6
  • 0.1.5
  • 0.1.4
  • 0.1.3
  • 0.1.2
released Jan 5th 2021
This version is compatible with:
  • Puppet Enterprise 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x
  • Puppet >= 5.5.10 < 7.0.0
  • , , ,

Start using this module

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

Add this module to your Puppetfile:

mod 'horsefish-bmc', '0.1.12'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add horsefish-bmc
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install horsefish-bmc --version 0.1.12

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.



horsefish/bmc — version 0.1.12 Jan 5th 2021

Baseboard Management Controller module

Build Status Code Coverage

Table of Contents

  1. Overview
  2. Module Description
  3. Setup
  4. Usage
  5. Operating Systems Support
  6. Development


This module configures the Remote Management System (Baseboard Management Controller) on Enterprise servers.

Module Description

You can configure the BMC's LAN, LDAP and SSL certificates and manage the local users.

Can use IPMItool require at least version 1.8.18 or a server provider specific tool (ie. racadm) to do the actual communication with the BMC.


What this module affects: This module affect's configures the BMC controller.

Setup Requirements

Beginning with bmc

To begin using the bmc module just include the bmc module and it will install ipmitools or 3rd party OEM sofware if it is on supported hardware.

  include bmc

If you don't have access to the internet you can manage if 3rd party repositores should be installed.

  class { 'bmc':
    manage_oem_repo => false,


Simple user

To setup a bmc_user with username 'simple' with password: password

  bmc_user { 'simple':
    password => 'password',

A more complex user

A bmc user that only can use ipmi

  bmc_user { 'More complex':
    password => 'password',
    callin   => false,
    ipmi     => true,
    link     => false,

A very complex user

A bmc user with administrator privilege on channel 2 and user privilege on channel 1.

  bmc_user { 'Very complex':
    password  => 'password',
    callin    => false,
    ipmi      => true,
    privilege => 
        '1' => user,
        '2' => administrator,

With access to iDRAC with admin rights

  bmc_user { 'idrac_admin':
    password => 'password',
    callin   => true,
    ipmi     => true,
    link     => true,
    idrac    => 0x1ff,

To change the SSL certificate

  bmc_ssl { 'IDRAC ssl':
    certificate_file => '/etc/ssl/private/idrac.pem',
    certificate_key  => '/etc/ssl/private/idrac.key',
    bmc_username     => 'root',
    bmc_password     => '<idrac_root_password>',
    bmc_server_host  => '',

A normal setup would be

  bmc_user { 'root':
    password => 'mypassword',
  bmc_ssl { 'IDRAC ssl':
    certificate_file => '/etc/ssl/private/idrac.pem',
    certificate_key  => '/etc/ssl/private/idrac.key',

Configure the NIC to use DHCP

  bmc_network { 'bmc_network':

Configure a static NIC setup

  bmc_network { 'bmc_network':
    ip_source       => static,
    ipv4_ip_address => '',
    ipv4_gateway    => '',
    ipv4_netmask    => '',

Configure LDAP

  bmc_ldap{'my_ldap' :
    server  => '',
    base_dn => 'CN=users,CN=accounts,DC=example,DC=com',

Configure LDAP groups

  bmc_ldap_group{'1' :
    server  => '',
    base_dn => 'CN=users,CN=accounts,DC=example,DC=com',

Configure NTP

  bmc_time{'my_ntp' :
    ntp_servers => ['',''],

Configure syslog

  bmc_syslog{'my_syslog' :
    syslog_servers => [''],

Operating Systems Support

This is tested on these OS:

  • Ubuntu 14.04
  • Centos 7.6
  • FreeBSD 11.2, 12.0


To develop (and test) providers we need access to as many and divert BMC's as possible. So if you have access to a server from HP, Dell, Intel, IBM, Oracle(SUN) where you will provide us admin rights for both BMC and OS please contact us.

Pull requests (PR) and bug reports via GitHub are welcomed.

When submitting PR please follow these quidelines:

  • Provide puppet-lint compliant code
  • If possible provide rspec tests
  • Follow the module style and stdmod naming standards

When submitting bug report please include or link:

  • The Puppet code that triggers the error
  • The output of facter on the system where you try it
  • All the relevant error logs
  • Any other information useful to undestand the context