1. v
“Manage Your Switches Like Servers”
Puppet Labs and Cumulus Networks
Presented By: Carl Caum and Leslie Carr
September 24th, 2015
2. Who is Carl?
§ Technical Marketing Manager
• @ccaum
• Recovering sysadmin
• Interested in continuous delivery and
IT cultures that promote empathy
cumulusnetworks.com
4. cumulusnetworks.com 4
of managers are not
satisfied with the speed
at which IT deploys
60%
of IT outages are due to
unexpected configuration
changes
70%
5. Main Steps of Puppet Enterprise
5
service { 'ssh':
ensure => running,
enable => true,
}
Choose from thousands
of pre-built modules
Simulate Enforce ReportDefine
cumulusnetworks.com
7. Puppet Enterprise Steps
cumulusnetworks.com 7
Choose from thousands of pre-
built modules.
Define the desired state using a
powerful, declarative language.
Simulate Enforce ReportDefine
11. Puppet Enterprise for Networking
cumulusnetworks.com 11
Networking before DevOps
• Siloed teams
• Siloed tooling and processes
• Slow collaboration and information sharing
• Different processes and tasks for provisioning vs ongoing
change management
12. Puppet Enterprise for Networking
cumulusnetworks.com 12
Collaborative Networking
• Unify change insight & management for all infrastructure
• Enhance collaboration between SysOps and NetOps
13. Puppet Enterprise for Networking
cumulusnetworks.com 13
Puppet for Networking
• Share infrastructure code between all of IT
• Eliminate differences between initial configuration and
ongoing change management
• Unify application deployments that span compute and
network
14. Puppet Enterprise for Networking
cumulusnetworks.com 14
App
Day One
• Configuration of authentication, SNMP, NTP, syslog
Day Two
• Configuration of interfaces, port channels, QoS
policies
Day Three
• Application deployments (dynamic routes, VLANs,
change audits)
• Model network dependencies and deploy in concert
with compute changes
• Holistically monitor app deployments in Puppet
Configuration Manager
DB
Network
AppApp
15. Who is Leslie?
§ Operations Engineer
• @lesliegeek
• Google
• Craigslist
• Twitter
• Wikimedia Foundation
(Wikipedia)
cumulusnetworks.com
16. Cumulus Networks at PuppetConf 2015
cumulusnetworks.com 16
See Cumulus Networks Leslie Carr
speak on “Why NetDevOps?” at
PuppetConf 2015
1:30pm, Friday, October 9th
17. What is Cumulus Linux?
§ Cumulus®
Linux®
• Debian based distribution for Network switches
Cumulus Philosophy
• Manage your network switch as a server
• Use existing linux tools to configure network switches
• Current release — Based on Debian wheezy
cumulusnetworks.com
18. Single-Vendor blob
- Constrained innovation
- High margins for vendors
- Slow feature dev cycles
Great Physical Networking with the Cumulus
®
Linux
®
OS
18
HARDWARE
APP APPAPP
OPERATING SYSTEM
Customer Choice
- Vibrant DevOps community
- Best-of-breed vendors
- Rapid deployment
hardware
operating system
app app app
NSX
cumulusnetworks.com
21. Traditional Network Gear Process
• Comes preinstalled with (old) software
• Telnet or serial into box
• TFTP new image
• Enable SSH (sometimes with passwords!)
• Copy/paste configuration
• Automation usually restricted to Perl, TCL, and expect
scripts
cumulusnetworks.com
22. Normal Server Installation
• Reboot and bios with PXE automatically catches
• TFTP boot image
• New image pulled over via normal means (usually
webserver, sometimes TFTP)
• Pre/post installation scripts runs
• Automation software manages configuration and
administration
cumulusnetworks.com
23. Network OS installer discovery and execution
• Like a pre-installed BIOS, PXE, and kickstarter in one
• Implemented through Linux kernel with BusyBox
Donated to the Open Compute Project (OCP)
http://www.onie.org
ONIE
cumulusnetworks.com
24. Comparison
bare metal server
Server OS
app app app
BIOS and PXE
bare metal switch
Network OS
app app app
Boot Loader and ONIE
Similar to installing a server OS using PXE
Network OS
Boot Loader and ONIE
boot into
Boot Loader and ONIE
boot into
ONIE looks for and installs network OS image
cumulusnetworks.com
25. Cumulus Linux OS Installation with ONIE
cumulusnetworks.com 25
§ Look for installer (“discover”)
• Locally, e.g. USB if available
• Over the network on eth0
• DHCP, IPv6 neighbor, TFTP
§ Search for file name and execute
• onie-‐installer-‐*
1
2
Cumulus Linux
OS image
26. During the DHCP process over eth0 (management interface), Cumulus
Linux will request DHCP option 239. This option is used to specify the
custom provisioning script. It will also send the following headers:
Header
Value
Example
-‐-‐-‐-‐-‐-‐
-‐-‐-‐-‐-‐
-‐-‐-‐-‐-‐-‐-‐
User-‐Agent
CumulusLinux-‐AutoProvision/0.4
CUMULUS-‐ARCH
CPU
architecture
powerpc
CUMULUS-‐BUILD
1.5.1-‐5c6829a-‐201309251712-‐final
CUMULUS-‐LICENSE-‐INSTALLED
Either
0
or
1
1
CUMULUS-‐MANUFACTURER
dni
CUMULUS-‐PRODUCTNAME
et-‐7448bf
CUMULUS-‐SERIAL
XYZ123004
CUMULUS-‐VERSION
1.5.1
CUMULUS-‐PROV-‐COUNT
0
CUMULUS-‐PROV-‐MAX
32
ZTP – Zero Touch Provisioning
cumulusnetworks.com
27. § Script must contain CUMULUS-‐AUTOPROVISIONING
Can be in the following languages :
• Perl
• Python
• Ruby
• Shell
ZTP(Zero Touch Provisioning) Execution
cumulusnetworks.com
28. ZTP Example with Puppet
1
#!/bin/bash
2
3
function
error()
{
4
echo
-‐e
"e[0;33mERROR:
Provisioning
failed
running
$BASH_COMMAND
at
line
$BASH_LINENO
of
$(basename
$0)
e[0m"
>&2
5
exit
1
6
}
7
trap
error
ERR
8
#
Allow
Cumulus
testing
repo
9
sed
-‐i
/etc/apt/sources.list
-‐e
's/^#s*
(deb.*testing.*)$/1/g'
10
11
#
Upgrade
and
install
Puppet
12
apt-‐get
update
-‐y
13
apt-‐get
upgrade
-‐y
14
apt-‐get
install
puppet
-‐y
15
16
echo
"Configuring
puppet"
|
wall
-‐n
17
sed
-‐i
/etc/default/puppet
-‐e
's/
START=no/START=yes/'
18
19
service
puppet
restart
20
21
#
CUMULUS-‐AUTOPROVISIONING
22
23
exit
0
cumulusnetworks.com
30. § Because Debian based, we can do everything with
Puppet Enterprise
• users
• interface configuration
• routing software (Quagga) configuration
Puppet
cumulusnetworks.com
32. How can we make your life better?
Make Life Even Better
cumulusnetworks.com
33. Warning - small hard drive and limited processing
power -- not recommended for long term
Scenario - installing new rack with limited
connectivity
* make switch puppetmaster
Interim Puppet Server!
cumulusnetworks.com
37. Puppet Modules and Other Resources
cumulusnetworks.com 37
Puppet:
• Solutions Page:
https://puppetlabs.com/solutions/cumulus
• Puppet Modules:
https://forge.puppetlabs.com/cumuluslinux
Cumulus:
• Puppet demo on Cumulus Workbench and other
materials
http://cumulusnetworks.com/solutions/data-center-
automation/puppet/
38. § PTM
• https://github.com/CumulusNetworks/ptm
Example Code
• https://github.com/LeslieCarr/puppet-presentation
Cumulus Open Source
• http://oss.cumulusnetworks.com
Twitter
• @lesliegeek
Find out more!
cumulusnetworks.com
39. The Building Blocks
§ Cumulus VX
https://cumulusnetworks.com/cumulus-vx/
§ Cumulus Workbench
https://cumulusnetworks.com/cw/
§ Cumulus Linux
http://cumulusnetworks.com/cumulus-linux/overview/
39
Prototype
TestAutomate
Deploy
{ Virtual Appliance }
{ Testing in the Cloud }
{ The Real Deal }
cumulusnetworks.com
40. Cumulus Networks at PuppetConf 2015
cumulusnetworks.com 40
See Cumulus Networks Leslie Carr
speak on “Why NetDevOps?” at
PuppetConf 2015
1:30pm, Friday, October 9th