#CLUS Build a NetDevOps CICD Pipeline Leveraging the “best” of Open Source, free, and commercial softward Hank Preston, Principal Engineer NetDevOps Evangelist @hfpreston ccie 38336 R/S Session ID DEVNET-1296 #CLUS Build a Network Configuration CICD Pipeline • • • Today’s Network Configuration Pipelines DevOps -> NetDevOps Pipelines with CICD NetDevOps CICD in Action #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 3 Cisco Webex Teams Questions? Use Cisco Webex Teams (formerly Cisco Spark) to chat with the speaker after the session How 1 Find this session in the Cisco Events App 2 Click “Join the Discussion” 3 Install Webex Teams or go directly to the team space 4 Enter messages/questions in the team space Webex Teams will be moderated by the speaker until June 18, 2018. cs.co/ciscolivebot#DEVNET-1296 #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 4 Today’s Network Configuration Pipelines “Every time we implement a network change something goes wrong…” “Isn’t it great, our switch hasn’t been rebooted in 6 years” “We can’t update/change the network, our business won’t allow it” * Paraphrased quotes from actual network operators #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 6 74% of operators report network changes have significantly impacted their business* 97% of operators admit human factors cause network outages* 22% of unplanned outages caused by human error** #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 7 Today’s reality… • • • Functional but considered fragile Network configuration more “art than science” Tribal knowledge of key engineers #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 8 More Stuff • Copy Pasta #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 9 Today’s Pipeline Realities Sequential and Manual Infrastructure Provisioning Snowflake Infrastructure with Organic Configurations #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 10 DevOps -> NetDevOps Pipelines with CICD Software Development Process – Integration • Bring together individual developers code • Compile/Build components • Execute Tests #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 12 Software Development Process – Delivery • On tested and working code • Create final artifacts • Make available for usage #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 13 Software Development Process – Deployment • Install application • Configure for use #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 14 • Continuous development is the natural progression of iteration times shrinking into insignificance. Through heavy use of automation, flexible infrastructure and modular architecture, software development leaders have come to the point where each code change is its own deployment. • http://searchsoftwarequality.t echtarget.com/essentialguide/ Next-generation-AgileGuide-to-continuousdevelopment Continuous Development (or CICD) DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 15 Continuous Development Process Flow Continuous Integration Continuous Delivery Continuous Deployment Merging of development work with code base constantly so that automated testing can catch problems early Software package delivery mechanism for releasing code to staging for review and inspection Relies on CI and CD to automatically release code into production as soon as it is ready. Constant flow of new features into production #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 16 NetDevOps Configuration Pipeline • • • • • “Treating the Network as Code” Network Configuration stored in Source Control Changes are proposed in code “branches” CICD Build Servers deploy and test proposed configurations Successful configurations automatically deployed to “Production” #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 17 The NetDevOps Engineers Tool Bag (Example tools, not comprehensive) Distributed Source Control (git, Subversion, Mercurial, GitHub, BitBucket, GitLab) Build Server (GitLab, Jenkins, Team City, Drone) Configuration Management (Ansible, Puppet, NSO, NAPALM, DIY) CLI Network Test Tooling (PyATS, TRex, Robot, Behave) NETCONF/ RESTCONF SNMP gRPC Telemetry & Monitoring (ELK, Grafana, Pipeline, UTM) REST APIs YANG/Native Data Model Configuration Data Operational Data Network Device Development Environment (Vagrant, NSO, VIRL/CML) Test Environment (VIRL/CML) #CLUS DEVNET-1291 Network Virtualization Platforms (VIRL/CML, NFVIS, Vagrant) Production Environment © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 18 NetDevOps CICD in Action Our Target Network Configuration Goals • Typical end to end network topology • Multi-platform (XR, XE, NX) • Test and Production parity • Test Production Entire configuration managed with “Network as Code” #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 21 Demo Environment Version Control Infrastructure as Code Dev Network Environment Source Control Chat and Notifications Network Testing #CLUS Network Simulation DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 22 Pipeline Instruction Files • pipeline: notify: spark: roomName: App Builds Special file in repo provides pipeline definition • Examples: .drone.yml, .gitlabci.yml • Often YAML format • Define the build phases integration: commands: - python testing.py delivery: commands: - git merge deployment: commands: - ansible-playbook site.yaml Use available plugins • Execute commands • Operate conditionally • * For reference, not a fully complete configuration #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 23 Build Stages Notification: Stage Goals • • Be notified of status following each build 3 Using Cisco Webex Teams #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 25 Continuous Integration: Stage Goals • Deploy full code base to test environment • Run validation tests • Build any artifacts needed #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 27 Continuous Delivery: Stage Goals • • Publish artifacts available for production use The Ansible playbook and information represents artifact • </> Merge from “test” -> “production” #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 29 Continuous Deployment: Stage Goals • • Update running application Application = Production Network </> #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 31 Use your Pipeline! Closing and Review What we did… Continuous Integration Continuous Delivery Continuous Deployment Merging of development work with code base constantly so that automated testing can catch problems early Software package delivery mechanism for releasing code to staging for review and inspection Relies on CI and CD to automatically release code into production as soon as it is ready. Constant flow of new features into production #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 36 For the Network! #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 38 NetDevOps CICD Pipelines Deliver Consistent Version Controlled Infrastructure deployed with Parallel & Automated Provisioning #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 39 What do do next? • NetDevOps Readings • NetDevOps Learning Resources • Network Programmability Basics Video Course Embrace NetDevOps, Say Goodbye to a "Culture of Fear” • NetDevOps Goes Beyond Infrastructure as Code • What does "Network as Code" Mean? • A Network Engineers Journey in Programmability • NetDevOps and the Rise of the Programmable Network • • Network Programmability for Application Developers • NetDevOps Videos • How to be a Network Engineer in a Programmable Age • Network as Code in Action • Benefits of Configuration Management #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 40 Got more questions? Stay in touch! Hank Preston developer.cisco.com hapresto@cisco.com @hfpreston http://github.com/hpreston @CiscoDevNet facebook.com/ciscodevnet/ http://github.com/CiscoDevNet #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 41 Complete your online session evaluation Give us your feedback to be entered into a Daily Survey Drawing. Complete your session surveys through the Cisco Live mobile app or on www.CiscoLive.com/us. Don’t forget: Cisco Live sessions will be available for viewing on demand after the event at www.CiscoLive.com/Online. #CLUS DEVNET-1296 © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 42 Continue your education Demos in the Cisco campus Walk-in self-paced labs #CLUS DEVNET-1296 Meet the engineer 1:1 meetings Related sessions © 2018 Cisco and/or its affiliates. All rights reserved. Cisco Public 43 Thank you #CLUS #CLUS #CLUS