Version information
This version is compatible with:
- Puppet Enterprise < 2018.1.0
- Puppet >= 3.0.0 < 6.0.0
Start using this module
Add this module to your Puppetfile:
mod 'aristanetworks-eos', '1.5.0'
Learn more about managing modules with a PuppetfileDocumentation
Puppet EOS Module
Table of Contents
- Overview
- Module Description
- Setup
- Usage - Configuration options and additional functionality
- Reference - An under-the-hood peek at what the module is doing and how
- Limitations - OS compatibility, etc.
- Development - Guide for getting started developing the module
- Contributing - Contributing to this project
- License
- Release Notes
Build status
Overview
The Arista EOS module for Puppet provides a set of types and providers for automating Arista EOS node configuraitons. The module allows for configuration of EOS nodes using the Puppet agent running native in EOS.
The Puppet EOS modules are freely provided to the open source community for automating Arista EOS node configurations using Puppet. Support for the modules is provided on a best effort basis by the Arista EOS+ community. Please file any bugs, questions or enhancement requests using Github Issues
Module Description
This module provides network abstractions for configuring network services on Arista EOS nodes. The module provides a set of types and providers to serve as building blocks for automating the configuration of Arista EOS nodes. This module extends Puppet's capability to configure network devices including node system services, access services and trunk side services of EOS nodes running EOS 4.13 or later with the Puppet agent installed. The Puppet agent running on the node will use pluginsync to download the types and providers from the Puppet master and uses the Ruby Client for eAPI (rbeapi) to interface with the nodes configuration.
Setup
What Puppet EOS affects
The types and providers in this module provide native abstractions for configuring Arista EOS nodes.
Setup Requirements
This module requires pluginsync in order to synchronize the types and providers to the node. This module also requires the Ruby Client for eAPI to be installed on the master and nodes.
Beginning with eos
- Install the module on the Puppet master
- Install the rbeapi gem on the Puppet master See Ruby Client for eAPI
- Install the rbeapi gem on the switch See Ruby Client for eAPI
- Run the puppet agent on the switch to synchronize the types and providers
- List the types by running
bash sudo puppet resource --types | grep eos
from the EOS CLI enable mode - Verify the providrs by running
bash sudo puppet resource <resource>
from the EOS CLI enable mode
Arista$ bash sudo puppet resource eos_vlan
eos_vlan { '1':
ensure => 'present',
enable => 'true',
vlan_name => 'default',
}
eos_vlan { '100':
ensure => 'present',
enable => 'true',
vlan_name => 'TEST_VLAN_100',
}
Usage
See the Documentation
Reference
See the Type reference in the documentation
Limitations
- Puppet 3.6 or later
- Ruby 1.9.3 or later
- Arista EOS 4.13.7M or later
- Ruby Client for eAPI 0.4.0 or later
Development
This module can be configured to run directly from source and configured to do local development, sending the commands to the node over HTTP. The following instructions explain how to configure your local development environment.
This module requires one dependency that must be checked out as a Git working copy in the context of ongoing development in addition to running Puppet from source.
The dependency is managed via the bundler Gemfile and the environment needs to be configured to use local Git copies:
cd /workspace
git clone https://github.com/arista-eosplus/rbeapi
export GEM_RBEAPI_VERSION=file:///workspace/rbeapi
Once the dependencies are installed and the environment configured, then install all of the dependencies:
git clone https://github.com/arista-eosplus/puppet-eos
cd puppet-eos
bundle install --path .bundle/gems
Once everything is installed, run the spec tests to make sure everything is working properly:
bundle exec rspec spec
Finally, configure the eapi.conf file for rbeapi See rbeapi for
details and set the connection enviroment variable to run sanity tests
using puppet resource
:
export RBEAPI_CONNECTION=veos01
Contributing
Contributions to this project are gladly welcomed in the form of issues (bugs, questions, enhancement proposals) and pull requests. All pull requests must be accompanied by spec unit tests and up-to-date doc-strings, otherwise the pull request will be rejected.
License
Copyright (c) 2014-2015, Arista Networks EOS+ All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
Neither the name of Arista Networks nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Release Notes
See the Release Notes in the official documentation.
Types in this module release
Change Log
1.5.0 (2016-12-09)
Implemented enhancements:
- Cleanup style and ignore unnecessary files in release pkg #114 (jerearista)
- Add CI build badges to README.md #73 (jerearista)
Fixed bugs:
- Limit rubocop version when running ruby 1.9 #81 (jerearista)
- Update docs WRT puppet 2015.x agents #76 (jerearista)
Closed issues:
Merged pull requests:
- Style updates #113 (jerearista)
- Switchconfig type & provider #112 (jerearista)
- add 25gfull and 50gfull for the allowed ethernet speeds #110 (mmailand)
- add support for subinterfaces/loadinterval #109 (mmailand)
- Added eos_alias type #108 (mmailand)
- added support for setting the crypto in managementdefaults #107 (mmailand)
- added support for autostate #106 (mmailand)
- Add TestKitchen framework #105 (jerearista)
- modify munge not to rely on netaddr gem #102 (mrvinti)
- fix require statements to workaround autoload issues with puppet #100 (rknaus)
- add prefixlist type and provider + spec tests #99 (mrvinti)
- add logging host type and provider #98 (rknaus)
- add ospf types and providers #97 (rknaus)
- Limit version of json and listen gems when Ruby \< 2.0 #96 (jerearista)
- add mst instance type and provider #94 (rknaus)
- add switchport trunk allowed vlan list capability #92 (rknaus)
- add ethernet speed and lacp port priority support #91 (rknaus)
- Fix password change issue for md5 and sha512 passwords #87 (mmailand)
- portchannel_convergence needs two puppet runs #85 (mmailand)
- implemented trunk group support for the eos_switchport provider #83 (mmailand)
- Fix issue with autoload of helper #82 (rknaus)
- Back out change from PR 78 - use set_trunk_groups. #80 (devrobo)
- Fixed Typo in the vlan provider in the trunk_groups function. #78 (mmailand)
- Merge Release 1.4.0 back to develop #72 (jerearista)
v1.4.0 (2016-01-13)
Implemented enhancements:
- Update metadata to include requirements section #66
- eos_stp_interface provider unit test is incomplete. #51
- Add requirements section to metadata #67 (jerearista)
Fixed bugs:
- eos_portchannel members not idempotent when interface order is not the same #46
- eos_vlan provider does not properly set trunk_groups #38
- Ensure order of array does not affect idempotency #70 (websitescenes)
- Fixed trunk groups call in provider. #68 (devrobo)
Closed issues:
- Providers only actually work in tests #60
- All providers should have a description #55
- Cleanup documentation #19
Merged pull requests:
- Release 1.4.0 #71 (jerearista)
- Add test cases for provider methods. #69 (devrobo)
- Add / enhance descriptions with examples #64 (jerearista)
v1.3.0 (2015-11-21)
Implemented enhancements:
- Confine types to only run on AristaEOS #36
- Confine providers to only run on AristaEOS and when rbeapi >= 0.3.0 is present #48 (jerearista)
- Feature bgp update #41 (websitescenes)
Merged pull requests:
- Merge develop with master for Release 1.3.0 #63 (jerearista)
- Release 1.3.0 #62 (jerearista)
- Confinement update #61 (jerearista)
- Adjustments for idempotency in staticroute #59 (websitescenes)
- Feature system update #58 (websitescenes)
- Feature confine rbeapi #57 (jerearista)
- Netaddr inconsistencies. #56 (websitescenes)
- Created eos_vrrp type #53 (devrobo)
- Adding routemap functionality #52 (websitescenes)
- Add eos_config resource. #50 (devrobo)
- Addressed Rubocop issues #49 (devrobo)
- eos varp and varp interface functionality. #47 (websitescenes)
- Fixed version typo from 4.15.5 --> 4.14.5 #45 (jerearista)
- Fixes #44 (devrobo)
- Remove unneeded information from bgp flush #43 (websitescenes)
- Adding feature eos user type and provider. #42 (websitescenes)
- Convert bgp flush #40 (devrobo)
- Add 4.15 to the list of supported versions #39 (jerearista)
v1.2.0 (2015-08-26)
Implemented enhancements:
- Release 1.2.0 #34 (jerearista)
- Pass in boolean value for enable option. #33 (devrobo)
- BGP type and provider bug fix, enhancement, and updated tests #32 (devrobo)
- Feature eos_staticroute #31 (jerearista)
- Rubocop cleanup. #30 (devrobo)
- Add unit test cases for yes/no and other boolean values. #28 (devrobo)
- Added support for BGP types and providers along with unit tests. #25 (devrobo)
Fixed bugs:
- mock not intercepting acl.getall call #14
- BGP type and provider bug fix, enhancement, and updated tests #32 (devrobo)
Closed issues:
- eos_bgp_neighbor not configuring #27
- eos_interface not controlling shutdown/enable status properly #26
Merged pull requests:
- Release 1.2.0 #37 (jerearista)
- Verify results from get/getall call is not nil. #35 (devrobo)
- Include release notes for the 1.1.0 release #24 (jerearista)
v1.1.0 (2015-07-07)
Implemented enhancements:
- Add tag metadata to enhance search-ability on Forge #11
- Update metadata tags and operatingsystem_support #12 (jerearista)
Merged pull requests:
- Include release notes for the 1.1.0 release #23 (jerearista)
- Release 1.1.0 #22 (jerearista)
- Prune unready types before release #21 (jerearista)
- Merge 1.1.0 updates to develop #20 (jerearista)
- Ci mods #18 (devrobo)
- Added eos_command type, provider, and type unit test. #16 (devrobo)
- Rubocop cleanup #13 (devrobo)
- Added support for eos_stp_interface type and provider along with unit… #10 (devrobo)
- Cleanup doc-related warnings and URLs #9 (jerearista)
- Fixup release 1.0.0 merges #8 (jerearista)
v1.0.0 (2015-05-06)
Closed issues:
- warning: already initialized constant IPADDR_REGEXP in mlag and ipinterface types #2
Merged pull requests:
- Update guide/conf.py to get version from new metadata.json file #6 (jerearista)
- Docs #5 (jerearista)
- Release 1.0.0 #4 (devrobo)
- Release prep #3 (jerearista)
- adds type and provider support for vxlan vtep flood addresses #1 (devrobo)
* This Change Log was automatically generated by github_changelog_generator
Copyright (c) 2014-2015, Arista Networks EOS+ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Arista Networks nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.