This is a fork of Cumulus Network repo (http://github.com/cumulusNetworks/cumulus-cl-ports-puppet).
Actual puppet forge page: https://forge.puppet.com/c2devel/cumulus_ports
Feel free to send patches to http://github.com/c2devel/cumulus-cl-ports-puppet/
cumulus_ports for Puppet
Table of Contents
- Overview
- Module Description
- Setup
- Usage
- Reference
- Limitations - OS compatibility, etc.
- Development - Guide for contributing to the module
Overview
This Puppet module provides a simple interface for managing initial port configuration on Cumulus Linux.
Module Description
The cumulus_ports module is responsible for setting the initial speed of a 10G or
40G port. On some bare metal switches, it is possible to take a 40G port and split it up
into four 10G ports using a breakout cable. For more details, read the Cumulus
Linux User Guide and search for
"Switch Port Attributes".
Setup
What cumulus_ports affects
- This module affects the
/etc/cumulus/ports.conffile. - To activate the changes in the file, the
switchddaemon must be restarted.
NOTE: Restarting the
switchddaemon is disruptive.
Beginning with cumulus_ports
This module does not use any default parameters. Support for default parameters is on the roadmap.
Usage
The module currently supports one define, cumulus_ports::speeds:
node default {
cumulus_ports { 'speeds':
speed_40g_div_4 => ["swp1-4"],
speed_10g => ["swp5-48"],
speed_4_by_10g => ["swp49-50"],
speed_40g => ["swp51-52"]
}
}
Reference
Types
cumulus_ports
Generates a custom /etc/cumulus/ports.conf based on the following variables:
speed_10g:speed_10g => 'swp1-2'produces the following text in/etc/cumulus/ports.conf:
swp1=10G
swp2=10G
speed_40g:speed_40g => 'swp1-2'produces the following text in/etc/cumulus/ports.conf:
swp1=40G
swp2=40G
speed_40g_div_4:speed_40g_div_4 => ['swp1', 'swp4']produces the following text in/etc/cumulus/ports.conf:
swp1=40/4
swp4=40/4
speed_4_by_10g:speed_4_by_10g => 'swp1-2'produces the following text in/etc/cumulus/ports.conf:
swp1=4x10G
swp2=4x10G
Warning
When you split ports into four interfaces, you must configure the adjacent port as “disabled” in this file. When splitting a port into two interfaces, such as 2x50G, you do not have to disable the adjacent port. Adjacent ports only need to be disabled when a port is split into four interfaces. For example, when splitting port 1 into four 25G interfaces, port 2 must be configured as “disabled”. For more information, refer to the documentation at https://docs.nvidia.com/networking-ethernet-software/cumulus-linux-42/Layer-1-and-Switch-Ports/Interface-Configuration-and-Management/Switch-Port-Attributes/#breakout-ports
disabled:disabled => 'swp3'in conjunction withspeed_4_by_10g => 'swp2':puppet node default { cumulus_ports { 'speeds': speed_4_by_10g => ["swp2"], disabled => ["swp3"], } }produces the following text in/etc/cumulus/ports.conf:swp2=4x10G swp3=disabled
Limitations
This module only works on Cumulus Linux.
The module does not currently do any error checking. Ensure that the whole configuration is thoroughly tested, or the switch can behave in unpredictable ways.
puppet resource cumulus_ports doesn't currently work. This will be implemented in a later version.
Development
- Fork it.
- Create your feature branch (
git checkout -b my-new-feature). - Commit your changes (
git commit -am 'Add some feature'). - Push to the branch (
git push origin my-new-feature). - Create new Pull Request.
Cumulus Linux

Cumulus Linux is a software distribution that runs on top of industry-standard networking hardware. It enables the latest Linux applications and automation tools on networking gear while delivering new levels of innovation and flexibility to the data center.
For further details please see cumulusnetworks.com.