SlideShare a Scribd company logo
Automating the Network
1
Matt Peterson
Office of the CTO
Cumulus Networks
PuppetCamp London – November 3rd, 2015
whois!
Puppet’ing since 0.24 (2008)
Added CL support in 2013
Rocket Turtle?
§ Cumulus Networks®
Why {Net}DevOps?
cumulusnetworks.com 4
greater operational insight
Networking is the last infrastructure silo
{Net}DevOps
cumulusnetworks.com 5
Leverage common DevOps tenants within Networking
§  Configuration management (today’s focus)
§  Make repetitive tasks predictable
§  Enforce policy to desired state - naming schemes,
software versions, … great audit trail mechanism
§ Infrastructure as code
§  Describe physical & logical components in human &
machine readable formats
{Net}DevOps
cumulusnetworks.com 6
§  Reactive to infrastructure as a whole
§  ie: L3 Clos architecture, single spine switch fans fail,
automatically adjust IGP cost to route around
§  Consistency (sometimes viewed as transparency)
§  Source of truth (across entire org, if possible), Git is
popular in compute circles
§  Common monitoring & escalation systems
A brief history of DevOps
§ …well, almost.
cumulusnetworks.com 7
Traditional network automation
§ Top-down efforts
§  SNMP
§  YANG/NETCONF
§  OpenFlow
§ Ansible
§  Screen-scraping
§ Difficult to integrate with the rest of the Ops stack
cumulusnetworks.com 8
“Whitebox switch” or bare metal networking
§  Treat as a server, preforms like a switch (or router)
•  Kernel networking state sync to ASIC (and vice versa)
•  ifconfig, ethtool, isc-dhcp … apt-get pkgname!
§  Consistent tooling across compute & networking
•  CLI is usually bash, no walled garden
•  Automation friendly from day 1
§  Choice on HW & SW suppliers
•  Same as bare metal computing is today
•  Applies to costly optics & cabling too!
routing bridging ops
Cumulus Linux
hardware
Modern network automation
cumulusnetworks.com 10
Modern network automation
§ Zero Touch Provisioning (ZTP)
§  Normally triggered by DHCP
§ Runs a provisioning script
§  Performs personalization
§  Install & enable Puppet
§ Puppet takes over after Cumulus install
cumulusnetworks.com 11
ZTP with DHCP example dhcp.conf
§  ddns-­‐update-­‐style	
  none;	
  
§  default-­‐lease-­‐time	
  4320;	
  
§  max-­‐lease-­‐time	
  8640;	
  
§  authoritative;	
  
§  option	
  cumulus-­‐provision-­‐url	
  code	
  239	
  =	
  text;	
  
§  subnet	
  192.168.0.0	
  netmask	
  255.255.255.0	
  {	
  
§  	
  range	
  192.168.0.100	
  192.168.0.200;	
  
§  	
  option	
  routers	
  192.168.0.1;	
  
§  	
  option	
  domain-­‐name-­‐servers	
  192.168.0.1;	
  
§  	
  option	
  domain-­‐name	
  "lab.mycompany.com";	
  
§  	
  option	
  cumulus-­‐provision-­‐url	
  "http://192.168.0.2/provision.sh";	
  
§  }	
  
ZTP with DHCP example dhcp.conf
cumulusnetworks.com 13
dhclient.conf
	
  
option	
  cumulus-­‐provision-­‐url	
  code	
  239	
  =	
  text;	
  
Exit hook
1. #!/bin/bash	
  
2. #	
  Copyright	
  2015	
  Cumulus	
  Networks,	
  inc	
  	
  all	
  rights	
  reserved	
  
3. if	
  [	
  !	
  -­‐z	
  $new_cumulus_provision_url	
  ]	
  
4. then	
  
5.  	
  /usr/lib/cumulus/autoprovision	
  -­‐-­‐log	
  syslog	
  	
  -­‐-­‐url	
  $new_cumulus_provision_url	
  &	
  
6. fi	
  
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	
  
	
  
	
  
§ Debian based, so we can do everything via. Puppet
§  Interface configuration (including Bonds & Bridges)
§  Routing software (Quagga – BGP/OSPF) configuration
§  Users, authentication, logging, packages, monitoring…
Puppet
Managing network interfaces
cumulusnetworks.com 16
auto	
  swp1	
  
iface	
  swp1	
  
	
  	
  address	
  192.168.1.10	
  
	
  	
  netmask	
  255.255.255.0	
  
	
  	
  mtu	
  9000	
  
	
  
auto	
  swp2	
  
iface	
  swp2	
  
	
  	
  address	
  172.16.2.21	
  
	
  	
  mtu	
  9000	
  
…	
  
auto	
  swp48	
  
iface	
  swp48	
  
	
  	
  address	
  10.1.1.10	
  
	
  	
  netmask	
  255.255.254.0	
  
	
  	
  mtu	
  9000	
  
Managing network interfaces
cumulusnetworks.com 17
$swp1	
  	
  	
  =	
  {	
  'name'	
  =>	
  'swp1',	
  'address'	
  =>	
  '192.168.1.10',	
  'netmask'	
  =>	
  '255.255.255.0'	
  }	
  
$swp2	
  	
  	
  =	
  {	
  'name'	
  =>	
  'swp2',	
  'address'	
  =>	
  '172.16.2.21'	
  }	
  
$swp48	
  	
  =	
  {	
  'name'	
  =>	
  'swp48',	
  'address'	
  =>	
  '10.1.1.10',	
  'netmask'	
  =>	
  '255.255.254.0'	
  }	
  
$ifaces	
  =	
  [	
  $swp1,	
  $swp2,	
  $swp48	
  ]	
  
	
  
file	
  {	
  '/etc/network/interfaces':	
  
	
  	
  ensure	
  =>	
  file,	
  
	
  	
  content	
  =>	
  template('interfaces.erb')	
  
}	
  
<%	
  @ifaces.each	
  do	
  |iface|	
  -­‐%>	
  
auto	
  <%=	
  iface['name']	
  %>	
  
iface	
  <%=	
  iface['name']	
  %>	
  
	
  	
  address	
  <%=	
  iface['address']	
  %>	
  
	
  	
  <%	
  if	
  iface.has_key?('netmask')	
  -­‐%>	
  
	
  	
  netmask	
  <%=	
  iface['netmask']	
  %>	
  
	
  	
  <%	
  end	
  -­‐%>	
  
	
  	
  mtu	
  9000	
  
<%	
  end	
  %>	
  
Managing network interfaces
cumulusnetworks.com 18
1.  auto	
  lo	
  
2.  iface	
  lo	
  inet	
  loopback	
  
3.  <%	
  if	
  @int_loopback	
  -­‐%>	
  
4.  	
  	
  	
  	
  address	
  <%=	
  int_loopback	
  %>	
  
5.  	
  	
  	
  	
  netmask	
  255.255.255.255	
  
6.  <%	
  end	
  -­‐%>	
  
7.  auto	
  eth0	
  
8.  iface	
  eth0	
  inet	
  dhcp	
  
9.  <%	
  if	
  @int_unnumbered	
  -­‐%>	
  
10. #	
  unnumbered	
  interfaces	
  
11. <%	
  @int_unnumbered.each	
  do	
  |val|	
  -­‐%>	
  
12. auto	
  <%=	
  val	
  %>	
  
13. iface	
  <%=	
  val	
  %>	
  inet	
  static	
  
14. 	
  	
  	
  	
  address	
  <%=	
  int_loopback	
  %>	
  
15. 	
  	
  	
  	
  netmask	
  255.255.255.255	
  
16. <%	
  end	
  -­‐%>	
  
17. <%	
  else	
  %>	
  
18. #	
  no	
  unnumbered	
  interfaces	
  
19. <%	
  end	
  -­‐%>	
  
20. <%	
  if	
  @int_layer3	
  %>	
  
21. #	
  l3	
  interfaces	
  
22. <%	
  int_layer3.each_pair	
  do	
  |key,	
  value_hash|	
  %>	
  
23. auto	
  <%=	
  key	
  %>	
  
24. iface	
  <%=	
  key	
  %>	
  inet	
  static	
  
25. 	
  	
  	
  	
  address	
  <%=	
  value_hash['address']	
  %>	
  
26. 	
  	
  	
  	
  netmask	
  <%=	
  value_hash['netmask']	
  %>	
  
27. <%	
  end	
  %>	
  
28. <%	
  else	
  %>	
  
29. #	
  no	
  l3	
  interfaces	
  
30. <%	
  end	
  %>	
  
31. <%	
  if	
  int_bridges	
  %>	
  
32. #	
  bridges	
  
33. <%	
  int_bridges.each_pair	
  do	
  |key,	
  value_hash|	
  %>	
  
34. auto	
  <%=	
  key	
  %>	
  
35. iface	
  <%=	
  key	
  %>	
  inet	
  static	
  
36. 	
  	
  	
  	
  address	
  <%=	
  value_hash['address']	
  %>	
  
37. 	
  	
  	
  	
  netmask	
  <%=	
  value_hash['netmask']	
  %>	
  
38. 	
  	
  	
  	
  bridge_ports	
  <%	
  value_hash['members'].each	
  do	
  |val|	
  -­‐
%><%=	
  val%>	
  <%	
  end	
  -­‐%>	
  
39. <%	
  end	
  %>	
  
40. <%	
  else	
  %>	
  
41. #	
  no	
  bridges	
  
42. <%	
  end	
  %>	
  
Managing network interfaces
§ Everything in one file
§  Pros
§  Simple to implement and understand
§  Standard (no surprises)
§  Cons
§  Not simple if you have complex configurations
§  If one interface changes everything changes
cumulusnetworks.com 19
Managing network interfaces
cumulusnetworks.com 20
etc	
  
└──	
  network	
  
	
  	
  	
  	
  ├──	
  interfaces	
  
	
  	
  	
  	
  └──	
  interfaces.d	
  
	
  	
  	
  	
  	
  	
  	
  	
  ├──	
  eth0	
  
	
  	
  	
  	
  	
  	
  	
  	
  ├──	
  lo	
  
	
  	
  	
  	
  	
  	
  	
  	
  ├──	
  swp1	
  
	
  	
  	
  	
  	
  	
  	
  	
  ├──	
  swp2	
  
	
  	
  	
  	
  	
  	
  	
  	
  ├──	
  ...	
  
	
  	
  	
  	
  	
  	
  	
  	
  └──	
  swp48	
  
auto	
  swp48	
  
iface	
  swp48	
  
	
  	
  address	
  10.1.1.10	
  
	
  	
  netmask	
  255.255.254.0	
  
	
  	
  mtu	
  9000	
  
source	
  /etc/network/interfaces.d/*	
  
Managing network interfaces
§ Idempotentency
§  notify	
  =>	
  Service['networking']	
  
§  Change one interface, everything is reloaded
§ ifupdown2
§  Part of Cumulus Linux, optional in Debian, Ubuntu
§  ifreload	
  –a	
  
cumulusnetworks.com 21
Managing network interfaces
cumulusnetworks.com 22
define	
  iface	
  {	
  
	
  	
  $id	
  =	
  $name["name"]	
  
	
  	
  $address	
  =	
  $name["address"]	
  
	
  	
  $netmask	
  =	
  $name["netmask"]	
  
	
  
	
  	
  file	
  {	
  "/etc/network/interfaces.d/$id":	
  
	
  	
  	
  	
  ensure	
  =>	
  file,	
  
	
  	
  	
  	
  content	
  =>	
  template("iface.erb"),	
  
	
  	
  	
  	
  require	
  =>	
  File["/etc/network/interfaces.d"],	
  
	
  	
  	
  	
  notify	
  =>	
  Exec["reload_$id"],	
  
	
  	
  }	
  
	
  
	
  	
  exec	
  {	
  "reload_$id":	
  
	
  	
  	
  	
  command	
  =>	
  "ifdown	
  $id;ifup	
  $id",	
  
	
  	
  	
  	
  path	
  =>	
  ["/sbin"],	
  
	
  	
  	
  	
  refreshonly	
  =>	
  true,	
  
	
  	
  }	
  
}	
  
	
  
iface{	
  $ifaces:	
  }	
  
Cumulus Linux Puppet Modules
cumulusnetworks.com 23
cumulus_interface	
  {'swp1':	
  
	
  	
  ipv4	
  =>	
  '192.168.1.10/24',	
  
}	
  
	
  
cumulus_interface	
  {'swp2':	
  
	
  	
  ipv4	
  =>	
  '172.16.2.21',	
  
}	
  
	
  
cumulus_interface	
  {'swp48':	
  
	
  	
  ipv4	
  =>	
  '10.1.1.10/24',	
  
}	
  
Bridges & Bonds
cumulusnetworks.com 24
cumulus_bond	
  {'uplink':	
  
	
  	
  slaves	
  =>	
  ['swp10-­‐11']	
  
}	
  
	
  
cumulus_bridge	
  {	
  'br0':	
  
	
  	
  ports	
  	
  	
  	
  	
  	
  =>	
  ['swp1-­‐2']	
  
	
  	
  ipv4	
  	
  	
  	
  	
  	
  	
  =>	
  ['10.1.1.1/24']	
  
	
  	
  ipv6	
  	
  	
  	
  	
  	
  	
  =>	
  ['2001:db8:abcd::/48']	
  
	
  	
  alias_name	
  =>	
  'LXC	
  bridge'	
  
	
  	
  mtu	
  	
  	
  	
  	
  	
  	
  	
  =>	
  9000	
  
}	
  
Managing Layer 3
§ Quagga
§  OSPF, ECMP, BGP
§  Focused on an interactive CLI
•  Makes automation a little awkward
§  Graceful reload is experimental
§ Other Open Source
§  Bird
§  OpenBGPD
§  ExaBGP
cumulusnetworks.com 25
Firewalls & ACLs
§ Firewalls
§  UFW rules are dead easy
•  UFW Puppet modules exist
§  RedHat users are also covered
•  Lokkit modules exist
§ IPTables
§  Loads of IPTables modules to choose from
•  If you need it!
cumulusnetworks.com 26
Testing
§ Network Infrastructure as Code
§  It’s code!
§ Acceptance testing
§  Many vendors provide a virtual machine
§  You can connect them virtually into topologies
cumulusnetworks.com 27
Testing
cumulusnetworks.com 28
Testing
§ Vagrant
§ Serverspec
§  BATS, Cucumber, behave?
§ Beaker
§ GNS3
cumulusnetworks.com 29
Summary
§  Expressing networks as human (ie: virtual diagram) and machine
(YAML) = powerful (see PTM as an example)
§  HW appliances of all shapes are turning into
pure SW plays (some begrudgingly)
§  {Net}DevOps transformation has begun in networking
•  Please help these men and women share your journey!
© 2014 Cumulus Networks. CUMULUS, the Cumulus Logo, CUMULUS NETWORKS, and the Rocket Turtle Logo (the “Marks”) are trademarks and service marks of
Cumulus Networks, Inc. in the U.S. and other countries. You are not permitted to use the Marks without the prior written consent of Cumulus Networks. The registered
trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, owner of the mark on a world-wide basis. All other marks are used
under fair use or license from their respective owners.
§ Thank You!
cumulusnetworks.com 31
Matt Peterson
matt@cumulusnetworks.com
@dorkmatt
Ad

More Related Content

What's hot (20)

Managing Your Cisco Datacenter Network with Ansible
Managing Your Cisco Datacenter Network with AnsibleManaging Your Cisco Datacenter Network with Ansible
Managing Your Cisco Datacenter Network with Ansible
fmaccioni
 
Chef Provisioning a Chef Server Cluster - ChefConf 2015
Chef Provisioning a Chef Server Cluster - ChefConf 2015Chef Provisioning a Chef Server Cluster - ChefConf 2015
Chef Provisioning a Chef Server Cluster - ChefConf 2015
Chef
 
An Introduction into Bosh | anynines
An Introduction into Bosh | anynines An Introduction into Bosh | anynines
An Introduction into Bosh | anynines
anynines GmbH
 
Ansible Case Studies
Ansible Case StudiesAnsible Case Studies
Ansible Case Studies
Greg DeKoenigsberg
 
Salt conf 2014-installing-openstack-using-saltstack-v02
Salt conf 2014-installing-openstack-using-saltstack-v02Salt conf 2014-installing-openstack-using-saltstack-v02
Salt conf 2014-installing-openstack-using-saltstack-v02
Yazz Atlas
 
SaltConf 2014: Safety with powertools
SaltConf 2014: Safety with powertoolsSaltConf 2014: Safety with powertools
SaltConf 2014: Safety with powertools
Thomas Jackson
 
Ansible
AnsibleAnsible
Ansible
Raul Leite
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
Suresh Kumar
 
Network automation (NetDevOps) with Ansible
Network automation (NetDevOps) with AnsibleNetwork automation (NetDevOps) with Ansible
Network automation (NetDevOps) with Ansible
Bangladesh Network Operators Group
 
Go Faster with Ansible (PHP meetup)
Go Faster with Ansible (PHP meetup)Go Faster with Ansible (PHP meetup)
Go Faster with Ansible (PHP meetup)
Richard Donkin
 
Python Deployment with Fabric
Python Deployment with FabricPython Deployment with Fabric
Python Deployment with Fabric
andymccurdy
 
openstack源码分析(1)
openstack源码分析(1)openstack源码分析(1)
openstack源码分析(1)
cannium
 
Learn nginx in 90mins
Learn nginx in 90minsLearn nginx in 90mins
Learn nginx in 90mins
Larry Cai
 
Nginx Essential
Nginx EssentialNginx Essential
Nginx Essential
Gong Haibing
 
SaltConf14 - Oz Akan, Rackspace - Deploying OpenStack Marconi with SaltStack
SaltConf14 - Oz Akan, Rackspace - Deploying OpenStack Marconi with SaltStackSaltConf14 - Oz Akan, Rackspace - Deploying OpenStack Marconi with SaltStack
SaltConf14 - Oz Akan, Rackspace - Deploying OpenStack Marconi with SaltStack
SaltStack
 
Ansible & Cumulus Networks - Simplify Network Automation
Ansible & Cumulus Networks - Simplify Network AutomationAnsible & Cumulus Networks - Simplify Network Automation
Ansible & Cumulus Networks - Simplify Network Automation
Cumulus Networks
 
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet
 
Ansible: How to Get More Sleep and Require Less Coffee
Ansible: How to Get More Sleep and Require Less CoffeeAnsible: How to Get More Sleep and Require Less Coffee
Ansible: How to Get More Sleep and Require Less Coffee
Sarah Z
 
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
SaltStack
 
Mitchell Hashimoto, HashiCorp
Mitchell Hashimoto, HashiCorpMitchell Hashimoto, HashiCorp
Mitchell Hashimoto, HashiCorp
Ontico
 
Managing Your Cisco Datacenter Network with Ansible
Managing Your Cisco Datacenter Network with AnsibleManaging Your Cisco Datacenter Network with Ansible
Managing Your Cisco Datacenter Network with Ansible
fmaccioni
 
Chef Provisioning a Chef Server Cluster - ChefConf 2015
Chef Provisioning a Chef Server Cluster - ChefConf 2015Chef Provisioning a Chef Server Cluster - ChefConf 2015
Chef Provisioning a Chef Server Cluster - ChefConf 2015
Chef
 
An Introduction into Bosh | anynines
An Introduction into Bosh | anynines An Introduction into Bosh | anynines
An Introduction into Bosh | anynines
anynines GmbH
 
Salt conf 2014-installing-openstack-using-saltstack-v02
Salt conf 2014-installing-openstack-using-saltstack-v02Salt conf 2014-installing-openstack-using-saltstack-v02
Salt conf 2014-installing-openstack-using-saltstack-v02
Yazz Atlas
 
SaltConf 2014: Safety with powertools
SaltConf 2014: Safety with powertoolsSaltConf 2014: Safety with powertools
SaltConf 2014: Safety with powertools
Thomas Jackson
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
Suresh Kumar
 
Go Faster with Ansible (PHP meetup)
Go Faster with Ansible (PHP meetup)Go Faster with Ansible (PHP meetup)
Go Faster with Ansible (PHP meetup)
Richard Donkin
 
Python Deployment with Fabric
Python Deployment with FabricPython Deployment with Fabric
Python Deployment with Fabric
andymccurdy
 
openstack源码分析(1)
openstack源码分析(1)openstack源码分析(1)
openstack源码分析(1)
cannium
 
Learn nginx in 90mins
Learn nginx in 90minsLearn nginx in 90mins
Learn nginx in 90mins
Larry Cai
 
SaltConf14 - Oz Akan, Rackspace - Deploying OpenStack Marconi with SaltStack
SaltConf14 - Oz Akan, Rackspace - Deploying OpenStack Marconi with SaltStackSaltConf14 - Oz Akan, Rackspace - Deploying OpenStack Marconi with SaltStack
SaltConf14 - Oz Akan, Rackspace - Deploying OpenStack Marconi with SaltStack
SaltStack
 
Ansible & Cumulus Networks - Simplify Network Automation
Ansible & Cumulus Networks - Simplify Network AutomationAnsible & Cumulus Networks - Simplify Network Automation
Ansible & Cumulus Networks - Simplify Network Automation
Cumulus Networks
 
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet Availability and Performance at 100K Nodes - PuppetConf 2014
Puppet
 
Ansible: How to Get More Sleep and Require Less Coffee
Ansible: How to Get More Sleep and Require Less CoffeeAnsible: How to Get More Sleep and Require Less Coffee
Ansible: How to Get More Sleep and Require Less Coffee
Sarah Z
 
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
SaltConf14 - Ryan Lane, Wikimedia - Immediate consistency with Trebuchet Depl...
SaltStack
 
Mitchell Hashimoto, HashiCorp
Mitchell Hashimoto, HashiCorpMitchell Hashimoto, HashiCorp
Mitchell Hashimoto, HashiCorp
Ontico
 

Similar to Automating the Network (20)

ONOS SDN Controller - Introduction
ONOS SDN Controller - IntroductionONOS SDN Controller - Introduction
ONOS SDN Controller - Introduction
Eueung Mulyana
 
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
Wesley Beary
 
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean WinnCouch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
Trevor Roberts Jr.
 
Chris Swan ONUG Academy - Container Networks Tutorial
Chris Swan ONUG Academy - Container Networks TutorialChris Swan ONUG Academy - Container Networks Tutorial
Chris Swan ONUG Academy - Container Networks Tutorial
Cohesive Networks
 
fog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloudfog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloud
Wesley Beary
 
Vagrant, Ansible, and OpenStack on your laptop
Vagrant, Ansible, and OpenStack on your laptopVagrant, Ansible, and OpenStack on your laptop
Vagrant, Ansible, and OpenStack on your laptop
Lorin Hochstein
 
Cloud Meetup - Automation in the Cloud
Cloud Meetup - Automation in the CloudCloud Meetup - Automation in the Cloud
Cloud Meetup - Automation in the Cloud
petriojala123
 
[OpenStack 하반기 스터디] HA using DVR
[OpenStack 하반기 스터디] HA using DVR[OpenStack 하반기 스터디] HA using DVR
[OpenStack 하반기 스터디] HA using DVR
OpenStack Korea Community
 
Kamailio with Docker and Kubernetes
Kamailio with Docker and KubernetesKamailio with Docker and Kubernetes
Kamailio with Docker and Kubernetes
Paolo Visintin
 
Software Defined Datacenter
Software Defined DatacenterSoftware Defined Datacenter
Software Defined Datacenter
NETWAYS
 
OpenNebulaConf 2016 - Networking, NFVs and SDNs Hands-on Workshop by Rubén S....
OpenNebulaConf 2016 - Networking, NFVs and SDNs Hands-on Workshop by Rubén S....OpenNebulaConf 2016 - Networking, NFVs and SDNs Hands-on Workshop by Rubén S....
OpenNebulaConf 2016 - Networking, NFVs and SDNs Hands-on Workshop by Rubén S....
OpenNebula Project
 
Deploying Percona XtraDB Cluster in Openshift
Deploying Percona XtraDB Cluster in OpenshiftDeploying Percona XtraDB Cluster in Openshift
Deploying Percona XtraDB Cluster in Openshift
Alexander Rubin
 
NFD9 - Matt Peterson, Data Center Operations
NFD9 - Matt Peterson, Data Center OperationsNFD9 - Matt Peterson, Data Center Operations
NFD9 - Matt Peterson, Data Center Operations
Cumulus Networks
 
Docker SDN (software-defined-networking) JUG
Docker SDN (software-defined-networking) JUGDocker SDN (software-defined-networking) JUG
Docker SDN (software-defined-networking) JUG
Piotr Kieszczyński
 
Cutting through the fog of cloud
Cutting through the fog of cloudCutting through the fog of cloud
Cutting through the fog of cloud
Kyle Rames
 
9 creating cent_os 7_mages_for_dpdk_training
9 creating cent_os 7_mages_for_dpdk_training9 creating cent_os 7_mages_for_dpdk_training
9 creating cent_os 7_mages_for_dpdk_training
videos
 
Building cloud stack at scale
Building cloud stack at scaleBuilding cloud stack at scale
Building cloud stack at scale
ShapeBlue
 
DPDK in Containers Hands-on Lab
DPDK in Containers Hands-on LabDPDK in Containers Hands-on Lab
DPDK in Containers Hands-on Lab
Michelle Holley
 
Automating complex infrastructures with Puppet
Automating complex infrastructures with PuppetAutomating complex infrastructures with Puppet
Automating complex infrastructures with Puppet
Kris Buytaert
 
Skydive 5/07/2016
Skydive 5/07/2016Skydive 5/07/2016
Skydive 5/07/2016
Sylvain Afchain
 
ONOS SDN Controller - Introduction
ONOS SDN Controller - IntroductionONOS SDN Controller - Introduction
ONOS SDN Controller - Introduction
Eueung Mulyana
 
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
Wesley Beary
 
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean WinnCouch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
Trevor Roberts Jr.
 
Chris Swan ONUG Academy - Container Networks Tutorial
Chris Swan ONUG Academy - Container Networks TutorialChris Swan ONUG Academy - Container Networks Tutorial
Chris Swan ONUG Academy - Container Networks Tutorial
Cohesive Networks
 
fog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloudfog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloud
Wesley Beary
 
Vagrant, Ansible, and OpenStack on your laptop
Vagrant, Ansible, and OpenStack on your laptopVagrant, Ansible, and OpenStack on your laptop
Vagrant, Ansible, and OpenStack on your laptop
Lorin Hochstein
 
Cloud Meetup - Automation in the Cloud
Cloud Meetup - Automation in the CloudCloud Meetup - Automation in the Cloud
Cloud Meetup - Automation in the Cloud
petriojala123
 
[OpenStack 하반기 스터디] HA using DVR
[OpenStack 하반기 스터디] HA using DVR[OpenStack 하반기 스터디] HA using DVR
[OpenStack 하반기 스터디] HA using DVR
OpenStack Korea Community
 
Kamailio with Docker and Kubernetes
Kamailio with Docker and KubernetesKamailio with Docker and Kubernetes
Kamailio with Docker and Kubernetes
Paolo Visintin
 
Software Defined Datacenter
Software Defined DatacenterSoftware Defined Datacenter
Software Defined Datacenter
NETWAYS
 
OpenNebulaConf 2016 - Networking, NFVs and SDNs Hands-on Workshop by Rubén S....
OpenNebulaConf 2016 - Networking, NFVs and SDNs Hands-on Workshop by Rubén S....OpenNebulaConf 2016 - Networking, NFVs and SDNs Hands-on Workshop by Rubén S....
OpenNebulaConf 2016 - Networking, NFVs and SDNs Hands-on Workshop by Rubén S....
OpenNebula Project
 
Deploying Percona XtraDB Cluster in Openshift
Deploying Percona XtraDB Cluster in OpenshiftDeploying Percona XtraDB Cluster in Openshift
Deploying Percona XtraDB Cluster in Openshift
Alexander Rubin
 
NFD9 - Matt Peterson, Data Center Operations
NFD9 - Matt Peterson, Data Center OperationsNFD9 - Matt Peterson, Data Center Operations
NFD9 - Matt Peterson, Data Center Operations
Cumulus Networks
 
Docker SDN (software-defined-networking) JUG
Docker SDN (software-defined-networking) JUGDocker SDN (software-defined-networking) JUG
Docker SDN (software-defined-networking) JUG
Piotr Kieszczyński
 
Cutting through the fog of cloud
Cutting through the fog of cloudCutting through the fog of cloud
Cutting through the fog of cloud
Kyle Rames
 
9 creating cent_os 7_mages_for_dpdk_training
9 creating cent_os 7_mages_for_dpdk_training9 creating cent_os 7_mages_for_dpdk_training
9 creating cent_os 7_mages_for_dpdk_training
videos
 
Building cloud stack at scale
Building cloud stack at scaleBuilding cloud stack at scale
Building cloud stack at scale
ShapeBlue
 
DPDK in Containers Hands-on Lab
DPDK in Containers Hands-on LabDPDK in Containers Hands-on Lab
DPDK in Containers Hands-on Lab
Michelle Holley
 
Automating complex infrastructures with Puppet
Automating complex infrastructures with PuppetAutomating complex infrastructures with Puppet
Automating complex infrastructures with Puppet
Kris Buytaert
 
Ad

More from Puppet (20)

Puppet Community Day: Planning the Future Together
Puppet Community Day: Planning the Future TogetherPuppet Community Day: Planning the Future Together
Puppet Community Day: Planning the Future Together
Puppet
 
The Evolution of Puppet: Key Changes and Modernization Tips
The Evolution of Puppet: Key Changes and Modernization TipsThe Evolution of Puppet: Key Changes and Modernization Tips
The Evolution of Puppet: Key Changes and Modernization Tips
Puppet
 
Can You Help Me Upgrade to Puppet 8? Tips, Tools & Best Practices for Your Up...
Can You Help Me Upgrade to Puppet 8? Tips, Tools & Best Practices for Your Up...Can You Help Me Upgrade to Puppet 8? Tips, Tools & Best Practices for Your Up...
Can You Help Me Upgrade to Puppet 8? Tips, Tools & Best Practices for Your Up...
Puppet
 
Bolt Dynamic Inventory: Making Puppet Easier
Bolt Dynamic Inventory: Making Puppet EasierBolt Dynamic Inventory: Making Puppet Easier
Bolt Dynamic Inventory: Making Puppet Easier
Puppet
 
Customizing Reporting with the Puppet Report Processor
Customizing Reporting with the Puppet Report ProcessorCustomizing Reporting with the Puppet Report Processor
Customizing Reporting with the Puppet Report Processor
Puppet
 
Puppet at ConfigMgmtCamp 2025 Sponsor Deck
Puppet at ConfigMgmtCamp 2025 Sponsor DeckPuppet at ConfigMgmtCamp 2025 Sponsor Deck
Puppet at ConfigMgmtCamp 2025 Sponsor Deck
Puppet
 
The State of Puppet in 2025: A Presentation from Developer Relations Lead Dav...
The State of Puppet in 2025: A Presentation from Developer Relations Lead Dav...The State of Puppet in 2025: A Presentation from Developer Relations Lead Dav...
The State of Puppet in 2025: A Presentation from Developer Relations Lead Dav...
Puppet
 
Let Red be Red and Green be Green: The Automated Workflow Restarter in GitHub...
Let Red be Red and Green be Green: The Automated Workflow Restarter in GitHub...Let Red be Red and Green be Green: The Automated Workflow Restarter in GitHub...
Let Red be Red and Green be Green: The Automated Workflow Restarter in GitHub...
Puppet
 
Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
Puppet
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
Puppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
Puppet
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
Puppet
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
Puppet
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
Puppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
Puppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
Puppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
Puppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
Puppet
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
Puppet
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
Puppet
 
Puppet Community Day: Planning the Future Together
Puppet Community Day: Planning the Future TogetherPuppet Community Day: Planning the Future Together
Puppet Community Day: Planning the Future Together
Puppet
 
The Evolution of Puppet: Key Changes and Modernization Tips
The Evolution of Puppet: Key Changes and Modernization TipsThe Evolution of Puppet: Key Changes and Modernization Tips
The Evolution of Puppet: Key Changes and Modernization Tips
Puppet
 
Can You Help Me Upgrade to Puppet 8? Tips, Tools & Best Practices for Your Up...
Can You Help Me Upgrade to Puppet 8? Tips, Tools & Best Practices for Your Up...Can You Help Me Upgrade to Puppet 8? Tips, Tools & Best Practices for Your Up...
Can You Help Me Upgrade to Puppet 8? Tips, Tools & Best Practices for Your Up...
Puppet
 
Bolt Dynamic Inventory: Making Puppet Easier
Bolt Dynamic Inventory: Making Puppet EasierBolt Dynamic Inventory: Making Puppet Easier
Bolt Dynamic Inventory: Making Puppet Easier
Puppet
 
Customizing Reporting with the Puppet Report Processor
Customizing Reporting with the Puppet Report ProcessorCustomizing Reporting with the Puppet Report Processor
Customizing Reporting with the Puppet Report Processor
Puppet
 
Puppet at ConfigMgmtCamp 2025 Sponsor Deck
Puppet at ConfigMgmtCamp 2025 Sponsor DeckPuppet at ConfigMgmtCamp 2025 Sponsor Deck
Puppet at ConfigMgmtCamp 2025 Sponsor Deck
Puppet
 
The State of Puppet in 2025: A Presentation from Developer Relations Lead Dav...
The State of Puppet in 2025: A Presentation from Developer Relations Lead Dav...The State of Puppet in 2025: A Presentation from Developer Relations Lead Dav...
The State of Puppet in 2025: A Presentation from Developer Relations Lead Dav...
Puppet
 
Let Red be Red and Green be Green: The Automated Workflow Restarter in GitHub...
Let Red be Red and Green be Green: The Automated Workflow Restarter in GitHub...Let Red be Red and Green be Green: The Automated Workflow Restarter in GitHub...
Let Red be Red and Green be Green: The Automated Workflow Restarter in GitHub...
Puppet
 
Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
Puppet
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
Puppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
Puppet
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
Puppet
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
Puppet
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
Puppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
Puppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
Puppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
Puppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
Puppet
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
Puppet
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
Puppet
 
Ad

Recently uploaded (20)

SQL Database Design For Developers at PhpTek 2025.pptx
SQL Database Design For Developers at PhpTek 2025.pptxSQL Database Design For Developers at PhpTek 2025.pptx
SQL Database Design For Developers at PhpTek 2025.pptx
Scott Keck-Warren
 
Risk Analysis 101: Using a Risk Analyst to Fortify Your IT Strategy
Risk Analysis 101: Using a Risk Analyst to Fortify Your IT StrategyRisk Analysis 101: Using a Risk Analyst to Fortify Your IT Strategy
Risk Analysis 101: Using a Risk Analyst to Fortify Your IT Strategy
john823664
 
ICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdf
ICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdfICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdf
ICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdf
Eryk Budi Pratama
 
Bridging AI and Human Expertise: Designing for Trust and Adoption in Expert S...
Bridging AI and Human Expertise: Designing for Trust and Adoption in Expert S...Bridging AI and Human Expertise: Designing for Trust and Adoption in Expert S...
Bridging AI and Human Expertise: Designing for Trust and Adoption in Expert S...
UXPA Boston
 
Slack like a pro: strategies for 10x engineering teams
Slack like a pro: strategies for 10x engineering teamsSlack like a pro: strategies for 10x engineering teams
Slack like a pro: strategies for 10x engineering teams
Nacho Cougil
 
Breaking it Down: Microservices Architecture for PHP Developers
Breaking it Down: Microservices Architecture for PHP DevelopersBreaking it Down: Microservices Architecture for PHP Developers
Breaking it Down: Microservices Architecture for PHP Developers
pmeth1
 
Mastering Testing in the Modern F&B Landscape
Mastering Testing in the Modern F&B LandscapeMastering Testing in the Modern F&B Landscape
Mastering Testing in the Modern F&B Landscape
marketing943205
 
Top 5 Qualities to Look for in Salesforce Partners in 2025
Top 5 Qualities to Look for in Salesforce Partners in 2025Top 5 Qualities to Look for in Salesforce Partners in 2025
Top 5 Qualities to Look for in Salesforce Partners in 2025
Damco Salesforce Services
 
Right to liberty and security of a person.pdf
Right to liberty and security of a person.pdfRight to liberty and security of a person.pdf
Right to liberty and security of a person.pdf
danielbraico197
 
Is Your QA Team Still Working in Silos? Here's What to Do.
Is Your QA Team Still Working in Silos? Here's What to Do.Is Your QA Team Still Working in Silos? Here's What to Do.
Is Your QA Team Still Working in Silos? Here's What to Do.
marketing943205
 
TrustArc Webinar: Cross-Border Data Transfers in 2025
TrustArc Webinar: Cross-Border Data Transfers in 2025TrustArc Webinar: Cross-Border Data Transfers in 2025
TrustArc Webinar: Cross-Border Data Transfers in 2025
TrustArc
 
AI and Gender: Decoding the Sociological Impact
AI and Gender: Decoding the Sociological ImpactAI and Gender: Decoding the Sociological Impact
AI and Gender: Decoding the Sociological Impact
SaikatBasu37
 
Whose choice? Making decisions with and about Artificial Intelligence, Keele ...
Whose choice? Making decisions with and about Artificial Intelligence, Keele ...Whose choice? Making decisions with and about Artificial Intelligence, Keele ...
Whose choice? Making decisions with and about Artificial Intelligence, Keele ...
Alan Dix
 
Understanding SEO in the Age of AI.pdf
Understanding SEO in the Age of AI.pdfUnderstanding SEO in the Age of AI.pdf
Understanding SEO in the Age of AI.pdf
Fulcrum Concepts, LLC
 
OpenAI Just Announced Codex: A cloud engineering agent that excels in handlin...
OpenAI Just Announced Codex: A cloud engineering agent that excels in handlin...OpenAI Just Announced Codex: A cloud engineering agent that excels in handlin...
OpenAI Just Announced Codex: A cloud engineering agent that excels in handlin...
SOFTTECHHUB
 
Developing Product-Behavior Fit: UX Research in Product Development by Krysta...
Developing Product-Behavior Fit: UX Research in Product Development by Krysta...Developing Product-Behavior Fit: UX Research in Product Development by Krysta...
Developing Product-Behavior Fit: UX Research in Product Development by Krysta...
UXPA Boston
 
AI needs Hybrid Cloud - TEC conference 2025.pptx
AI needs Hybrid Cloud - TEC conference 2025.pptxAI needs Hybrid Cloud - TEC conference 2025.pptx
AI needs Hybrid Cloud - TEC conference 2025.pptx
Shikha Srivastava
 
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Christian Folini
 
Building Connected Agents: An Overview of Google's ADK and A2A Protocol
Building Connected Agents:  An Overview of Google's ADK and A2A ProtocolBuilding Connected Agents:  An Overview of Google's ADK and A2A Protocol
Building Connected Agents: An Overview of Google's ADK and A2A Protocol
Suresh Peiris
 
Computer Systems Quiz Presentation in Purple Bold Style (4).pdf
Computer Systems Quiz Presentation in Purple Bold Style (4).pdfComputer Systems Quiz Presentation in Purple Bold Style (4).pdf
Computer Systems Quiz Presentation in Purple Bold Style (4).pdf
fizarcse
 
SQL Database Design For Developers at PhpTek 2025.pptx
SQL Database Design For Developers at PhpTek 2025.pptxSQL Database Design For Developers at PhpTek 2025.pptx
SQL Database Design For Developers at PhpTek 2025.pptx
Scott Keck-Warren
 
Risk Analysis 101: Using a Risk Analyst to Fortify Your IT Strategy
Risk Analysis 101: Using a Risk Analyst to Fortify Your IT StrategyRisk Analysis 101: Using a Risk Analyst to Fortify Your IT Strategy
Risk Analysis 101: Using a Risk Analyst to Fortify Your IT Strategy
john823664
 
ICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdf
ICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdfICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdf
ICDCC 2025: Securing Agentic AI - Eryk Budi Pratama.pdf
Eryk Budi Pratama
 
Bridging AI and Human Expertise: Designing for Trust and Adoption in Expert S...
Bridging AI and Human Expertise: Designing for Trust and Adoption in Expert S...Bridging AI and Human Expertise: Designing for Trust and Adoption in Expert S...
Bridging AI and Human Expertise: Designing for Trust and Adoption in Expert S...
UXPA Boston
 
Slack like a pro: strategies for 10x engineering teams
Slack like a pro: strategies for 10x engineering teamsSlack like a pro: strategies for 10x engineering teams
Slack like a pro: strategies for 10x engineering teams
Nacho Cougil
 
Breaking it Down: Microservices Architecture for PHP Developers
Breaking it Down: Microservices Architecture for PHP DevelopersBreaking it Down: Microservices Architecture for PHP Developers
Breaking it Down: Microservices Architecture for PHP Developers
pmeth1
 
Mastering Testing in the Modern F&B Landscape
Mastering Testing in the Modern F&B LandscapeMastering Testing in the Modern F&B Landscape
Mastering Testing in the Modern F&B Landscape
marketing943205
 
Top 5 Qualities to Look for in Salesforce Partners in 2025
Top 5 Qualities to Look for in Salesforce Partners in 2025Top 5 Qualities to Look for in Salesforce Partners in 2025
Top 5 Qualities to Look for in Salesforce Partners in 2025
Damco Salesforce Services
 
Right to liberty and security of a person.pdf
Right to liberty and security of a person.pdfRight to liberty and security of a person.pdf
Right to liberty and security of a person.pdf
danielbraico197
 
Is Your QA Team Still Working in Silos? Here's What to Do.
Is Your QA Team Still Working in Silos? Here's What to Do.Is Your QA Team Still Working in Silos? Here's What to Do.
Is Your QA Team Still Working in Silos? Here's What to Do.
marketing943205
 
TrustArc Webinar: Cross-Border Data Transfers in 2025
TrustArc Webinar: Cross-Border Data Transfers in 2025TrustArc Webinar: Cross-Border Data Transfers in 2025
TrustArc Webinar: Cross-Border Data Transfers in 2025
TrustArc
 
AI and Gender: Decoding the Sociological Impact
AI and Gender: Decoding the Sociological ImpactAI and Gender: Decoding the Sociological Impact
AI and Gender: Decoding the Sociological Impact
SaikatBasu37
 
Whose choice? Making decisions with and about Artificial Intelligence, Keele ...
Whose choice? Making decisions with and about Artificial Intelligence, Keele ...Whose choice? Making decisions with and about Artificial Intelligence, Keele ...
Whose choice? Making decisions with and about Artificial Intelligence, Keele ...
Alan Dix
 
Understanding SEO in the Age of AI.pdf
Understanding SEO in the Age of AI.pdfUnderstanding SEO in the Age of AI.pdf
Understanding SEO in the Age of AI.pdf
Fulcrum Concepts, LLC
 
OpenAI Just Announced Codex: A cloud engineering agent that excels in handlin...
OpenAI Just Announced Codex: A cloud engineering agent that excels in handlin...OpenAI Just Announced Codex: A cloud engineering agent that excels in handlin...
OpenAI Just Announced Codex: A cloud engineering agent that excels in handlin...
SOFTTECHHUB
 
Developing Product-Behavior Fit: UX Research in Product Development by Krysta...
Developing Product-Behavior Fit: UX Research in Product Development by Krysta...Developing Product-Behavior Fit: UX Research in Product Development by Krysta...
Developing Product-Behavior Fit: UX Research in Product Development by Krysta...
UXPA Boston
 
AI needs Hybrid Cloud - TEC conference 2025.pptx
AI needs Hybrid Cloud - TEC conference 2025.pptxAI needs Hybrid Cloud - TEC conference 2025.pptx
AI needs Hybrid Cloud - TEC conference 2025.pptx
Shikha Srivastava
 
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Christian Folini
 
Building Connected Agents: An Overview of Google's ADK and A2A Protocol
Building Connected Agents:  An Overview of Google's ADK and A2A ProtocolBuilding Connected Agents:  An Overview of Google's ADK and A2A Protocol
Building Connected Agents: An Overview of Google's ADK and A2A Protocol
Suresh Peiris
 
Computer Systems Quiz Presentation in Purple Bold Style (4).pdf
Computer Systems Quiz Presentation in Purple Bold Style (4).pdfComputer Systems Quiz Presentation in Purple Bold Style (4).pdf
Computer Systems Quiz Presentation in Purple Bold Style (4).pdf
fizarcse
 

Automating the Network

  • 1. Automating the Network 1 Matt Peterson Office of the CTO Cumulus Networks PuppetCamp London – November 3rd, 2015
  • 2. whois! Puppet’ing since 0.24 (2008) Added CL support in 2013
  • 4. Why {Net}DevOps? cumulusnetworks.com 4 greater operational insight Networking is the last infrastructure silo
  • 5. {Net}DevOps cumulusnetworks.com 5 Leverage common DevOps tenants within Networking §  Configuration management (today’s focus) §  Make repetitive tasks predictable §  Enforce policy to desired state - naming schemes, software versions, … great audit trail mechanism § Infrastructure as code §  Describe physical & logical components in human & machine readable formats
  • 6. {Net}DevOps cumulusnetworks.com 6 §  Reactive to infrastructure as a whole §  ie: L3 Clos architecture, single spine switch fans fail, automatically adjust IGP cost to route around §  Consistency (sometimes viewed as transparency) §  Source of truth (across entire org, if possible), Git is popular in compute circles §  Common monitoring & escalation systems
  • 7. A brief history of DevOps § …well, almost. cumulusnetworks.com 7
  • 8. Traditional network automation § Top-down efforts §  SNMP §  YANG/NETCONF §  OpenFlow § Ansible §  Screen-scraping § Difficult to integrate with the rest of the Ops stack cumulusnetworks.com 8
  • 9. “Whitebox switch” or bare metal networking §  Treat as a server, preforms like a switch (or router) •  Kernel networking state sync to ASIC (and vice versa) •  ifconfig, ethtool, isc-dhcp … apt-get pkgname! §  Consistent tooling across compute & networking •  CLI is usually bash, no walled garden •  Automation friendly from day 1 §  Choice on HW & SW suppliers •  Same as bare metal computing is today •  Applies to costly optics & cabling too! routing bridging ops Cumulus Linux hardware
  • 11. Modern network automation § Zero Touch Provisioning (ZTP) §  Normally triggered by DHCP § Runs a provisioning script §  Performs personalization §  Install & enable Puppet § Puppet takes over after Cumulus install cumulusnetworks.com 11
  • 12. ZTP with DHCP example dhcp.conf §  ddns-­‐update-­‐style  none;   §  default-­‐lease-­‐time  4320;   §  max-­‐lease-­‐time  8640;   §  authoritative;   §  option  cumulus-­‐provision-­‐url  code  239  =  text;   §  subnet  192.168.0.0  netmask  255.255.255.0  {   §   range  192.168.0.100  192.168.0.200;   §   option  routers  192.168.0.1;   §   option  domain-­‐name-­‐servers  192.168.0.1;   §   option  domain-­‐name  "lab.mycompany.com";   §   option  cumulus-­‐provision-­‐url  "http://192.168.0.2/provision.sh";   §  }  
  • 13. ZTP with DHCP example dhcp.conf cumulusnetworks.com 13 dhclient.conf   option  cumulus-­‐provision-­‐url  code  239  =  text;   Exit hook 1. #!/bin/bash   2. #  Copyright  2015  Cumulus  Networks,  inc    all  rights  reserved   3. if  [  !  -­‐z  $new_cumulus_provision_url  ]   4. then   5.   /usr/lib/cumulus/autoprovision  -­‐-­‐log  syslog    -­‐-­‐url  $new_cumulus_provision_url  &   6. fi  
  • 14. 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      
  • 15. § Debian based, so we can do everything via. Puppet §  Interface configuration (including Bonds & Bridges) §  Routing software (Quagga – BGP/OSPF) configuration §  Users, authentication, logging, packages, monitoring… Puppet
  • 16. Managing network interfaces cumulusnetworks.com 16 auto  swp1   iface  swp1      address  192.168.1.10      netmask  255.255.255.0      mtu  9000     auto  swp2   iface  swp2      address  172.16.2.21      mtu  9000   …   auto  swp48   iface  swp48      address  10.1.1.10      netmask  255.255.254.0      mtu  9000  
  • 17. Managing network interfaces cumulusnetworks.com 17 $swp1      =  {  'name'  =>  'swp1',  'address'  =>  '192.168.1.10',  'netmask'  =>  '255.255.255.0'  }   $swp2      =  {  'name'  =>  'swp2',  'address'  =>  '172.16.2.21'  }   $swp48    =  {  'name'  =>  'swp48',  'address'  =>  '10.1.1.10',  'netmask'  =>  '255.255.254.0'  }   $ifaces  =  [  $swp1,  $swp2,  $swp48  ]     file  {  '/etc/network/interfaces':      ensure  =>  file,      content  =>  template('interfaces.erb')   }   <%  @ifaces.each  do  |iface|  -­‐%>   auto  <%=  iface['name']  %>   iface  <%=  iface['name']  %>      address  <%=  iface['address']  %>      <%  if  iface.has_key?('netmask')  -­‐%>      netmask  <%=  iface['netmask']  %>      <%  end  -­‐%>      mtu  9000   <%  end  %>  
  • 18. Managing network interfaces cumulusnetworks.com 18 1.  auto  lo   2.  iface  lo  inet  loopback   3.  <%  if  @int_loopback  -­‐%>   4.         address  <%=  int_loopback  %>   5.         netmask  255.255.255.255   6.  <%  end  -­‐%>   7.  auto  eth0   8.  iface  eth0  inet  dhcp   9.  <%  if  @int_unnumbered  -­‐%>   10. #  unnumbered  interfaces   11. <%  @int_unnumbered.each  do  |val|  -­‐%>   12. auto  <%=  val  %>   13. iface  <%=  val  %>  inet  static   14.         address  <%=  int_loopback  %>   15.         netmask  255.255.255.255   16. <%  end  -­‐%>   17. <%  else  %>   18. #  no  unnumbered  interfaces   19. <%  end  -­‐%>   20. <%  if  @int_layer3  %>   21. #  l3  interfaces   22. <%  int_layer3.each_pair  do  |key,  value_hash|  %>   23. auto  <%=  key  %>   24. iface  <%=  key  %>  inet  static   25.         address  <%=  value_hash['address']  %>   26.         netmask  <%=  value_hash['netmask']  %>   27. <%  end  %>   28. <%  else  %>   29. #  no  l3  interfaces   30. <%  end  %>   31. <%  if  int_bridges  %>   32. #  bridges   33. <%  int_bridges.each_pair  do  |key,  value_hash|  %>   34. auto  <%=  key  %>   35. iface  <%=  key  %>  inet  static   36.         address  <%=  value_hash['address']  %>   37.         netmask  <%=  value_hash['netmask']  %>   38.         bridge_ports  <%  value_hash['members'].each  do  |val|  -­‐ %><%=  val%>  <%  end  -­‐%>   39. <%  end  %>   40. <%  else  %>   41. #  no  bridges   42. <%  end  %>  
  • 19. Managing network interfaces § Everything in one file §  Pros §  Simple to implement and understand §  Standard (no surprises) §  Cons §  Not simple if you have complex configurations §  If one interface changes everything changes cumulusnetworks.com 19
  • 20. Managing network interfaces cumulusnetworks.com 20 etc   └──  network          ├──  interfaces          └──  interfaces.d                  ├──  eth0                  ├──  lo                  ├──  swp1                  ├──  swp2                  ├──  ...                  └──  swp48   auto  swp48   iface  swp48      address  10.1.1.10      netmask  255.255.254.0      mtu  9000   source  /etc/network/interfaces.d/*  
  • 21. Managing network interfaces § Idempotentency §  notify  =>  Service['networking']   §  Change one interface, everything is reloaded § ifupdown2 §  Part of Cumulus Linux, optional in Debian, Ubuntu §  ifreload  –a   cumulusnetworks.com 21
  • 22. Managing network interfaces cumulusnetworks.com 22 define  iface  {      $id  =  $name["name"]      $address  =  $name["address"]      $netmask  =  $name["netmask"]        file  {  "/etc/network/interfaces.d/$id":          ensure  =>  file,          content  =>  template("iface.erb"),          require  =>  File["/etc/network/interfaces.d"],          notify  =>  Exec["reload_$id"],      }        exec  {  "reload_$id":          command  =>  "ifdown  $id;ifup  $id",          path  =>  ["/sbin"],          refreshonly  =>  true,      }   }     iface{  $ifaces:  }  
  • 23. Cumulus Linux Puppet Modules cumulusnetworks.com 23 cumulus_interface  {'swp1':      ipv4  =>  '192.168.1.10/24',   }     cumulus_interface  {'swp2':      ipv4  =>  '172.16.2.21',   }     cumulus_interface  {'swp48':      ipv4  =>  '10.1.1.10/24',   }  
  • 24. Bridges & Bonds cumulusnetworks.com 24 cumulus_bond  {'uplink':      slaves  =>  ['swp10-­‐11']   }     cumulus_bridge  {  'br0':      ports            =>  ['swp1-­‐2']      ipv4              =>  ['10.1.1.1/24']      ipv6              =>  ['2001:db8:abcd::/48']      alias_name  =>  'LXC  bridge'      mtu                =>  9000   }  
  • 25. Managing Layer 3 § Quagga §  OSPF, ECMP, BGP §  Focused on an interactive CLI •  Makes automation a little awkward §  Graceful reload is experimental § Other Open Source §  Bird §  OpenBGPD §  ExaBGP cumulusnetworks.com 25
  • 26. Firewalls & ACLs § Firewalls §  UFW rules are dead easy •  UFW Puppet modules exist §  RedHat users are also covered •  Lokkit modules exist § IPTables §  Loads of IPTables modules to choose from •  If you need it! cumulusnetworks.com 26
  • 27. Testing § Network Infrastructure as Code §  It’s code! § Acceptance testing §  Many vendors provide a virtual machine §  You can connect them virtually into topologies cumulusnetworks.com 27
  • 29. Testing § Vagrant § Serverspec §  BATS, Cucumber, behave? § Beaker § GNS3 cumulusnetworks.com 29
  • 30. Summary §  Expressing networks as human (ie: virtual diagram) and machine (YAML) = powerful (see PTM as an example) §  HW appliances of all shapes are turning into pure SW plays (some begrudgingly) §  {Net}DevOps transformation has begun in networking •  Please help these men and women share your journey!
  • 31. © 2014 Cumulus Networks. CUMULUS, the Cumulus Logo, CUMULUS NETWORKS, and the Rocket Turtle Logo (the “Marks”) are trademarks and service marks of Cumulus Networks, Inc. in the U.S. and other countries. You are not permitted to use the Marks without the prior written consent of Cumulus Networks. The registered trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, owner of the mark on a world-wide basis. All other marks are used under fair use or license from their respective owners. § Thank You! cumulusnetworks.com 31 Matt Peterson matt@cumulusnetworks.com @dorkmatt
  翻译: