Version information
This version is compatible with:
- , , , ,
Start using this module
Add this module to your Puppetfile:
mod 'jhoblitt-ipmi', '2.3.0'
Learn more about managing modules with a PuppetfileDocumentation
Puppet ipmi Module
Table of Contents
Overview
Manages the OpenIPMI package
Description
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.
Usage
Examples
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 => '192.168.1.10',
netmask => '255.255.255.0',
gateway => '192.168.1.1',
}
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,
}
Classes
ipmi
# defaults
class { 'ipmi':
service_ensure => 'running', # default is 'running'
ipmievd_service_ensure => 'running', # default is 'stopped'
watchdog => true, # default is false
}
service_ensure
String
defaults to: running
Possible values: running
, stopped
Controls the state of the ipmi
service.
ipmievd_service_ensure
String
defaults to: stopped
Possible values: running
, stopped
Controls the state of the ipmievd
service.
watchdog
Boolean
defaults to: false
Controls whether the IPMI watchdog is enabled.
Defined Resources
ipmi::user
# defaults
ipmi::user { 'newuser':
user => 'root',
priv => 4, # Administrator
user_id => 3,
}
user
String
defaults to: root
Controls the username of the user to be created.
password
String
- required field
Controls the password of the user to be created.
priv
Integer
defaults to: 4
Possible values:
4
- ADMINISTRATOR,
3
- OPERATOR,
2
- USER,
1
- CALLBACK
Controls the rights of the user to be created.
user_id
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.
ipmi::network
# defaults
ipmi::network { 'lan1':
type => 'dhcp',
ip => '0.0.0.0',
netmask => '255.255.255.0',
gateway => '0.0.0.0',
lan_channel => 1,
}
type
String
defaults to: dhcp
Possible values: dhcp
, static
Controls the if IP will be from DHCP or Static.
ip
String
defaults to: 0.0.0.0
Controls the IP of the IPMI network.
netmask
String
defaults to: 255.255.255.0
Controls the subnet mask of the IPMI network.
gateway
String
defaults to: 0.0.0.0
Controls the gateway of the IPMI network.
lan_channel
Integer
defaults to: 1
Controls the lan channel of the IPMI network to be configured.
ipmi::snmp
# defaults
ipmi::snmp { 'lan1':
snmp => 'public',
lan_channel => 1,
}
snmp
String
defaults to: public
Controls the snmp string of the IPMI network interface.
lan_channel
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 => 192.168.10.1
ipmi1_ipaddress => 192.168.10.201
ipmi1_ipaddress_source => Static Address
ipmi1_macaddress => 00:30:48:c9:64:2a
ipmi1_subnet_mask => 255.255.255.0
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 => 192.168.10.1
ipmi_ipaddress => 192.168.10.201
ipmi_ipaddress_source => Static Address
ipmi_macaddress => 00:30:48:c9:64:2a
ipmi_subnet_mask => 255.255.255.0
Limitations
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 |
Versioning
This module is versioned according to the Semantic Versioning 2.0.0 specification.
Support
Please log tickets and issues at github
Contributing
- Fork it on github
- Make a local clone of your fork
- Create a topic branch. Eg,
feature/mousetrap
- 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
- When the feature is complete, rebase / squash the branch history as necessary to remove "fix typo", "oops", "whitespace" and other trivial commits
- Push the topic branch to github
- Open a Pull Request (PR) from the topic branch onto parent repo's
master
branch
See Also
Dependencies
- puppetlabs/stdlib (>= 4.6.0 < 5.0.0)
Copyright (C) 2012-2016 Joshua Hoblitt <josh@hoblitt.com> Copyright (C) 2013-2014 Mike Arnold <mike@razorsedge.org> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.