SlideShare a Scribd company logo
1 of 25
Download to read offline
v 
Unattended Datacenter Deployment with ZTP 
Leslie Carr 
October 15, 2014
Who is Leslie? 
! Operations Engineer 
! Google 
! Craigslist 
! Twitter 
! Wikimedia Foundation 
(Wikipedia)
Who is Leslie? 
! Cumulus Networks®
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
Cumulus® Linux® Hardware Compatibility List 
cumulusnetworks.com 4
v 
Installation and Configuration
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
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
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
Comparison 
Similar to installing a server OS using PXE 
app app app 
Server OS 
BIOS and PXE 
bare metal server 
app app app 
Network OS 
Boot Loader and ONIE 
bare metal switch 
ONIE looks for and installs network OS image 
boot into 
Network OS 
boot into 
Boot Loader and ONIE 
Boot Loader and ONIE
Cumulus Linux OS Installation with ONIE 
! 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%*, 
cumulusnetworks.com 10 
1 
2 
Cumulus Linux 
OS image
ZTP Execution 
! ZTP script execution is triggered on DHClient exit or by 
USB Stick 
• USB support in releases 2.5 and up 
! Script must contain CUMULUS%AUTOPROVISIONING,, 
! Can be in the following languages : 
• Perl 
• Python 
• Ruby 
• Shell
ZTP Script USB 
USB looks for a specific file name “waterfall” 
wate rfall,=,[, 
'cumulus%ztp%',+,arch,+,'%',+,vendor,+,'_',+,model,+,'%r’,+,revision,, 
'cumulus%ztp%',+,arch,+,'%',+,vendor,+,'_',+,model, 
'cumulus%ztp%',+,vendor,+,'_',+,model, 
'cumulus%ztp%',+,arch, 
'cumulus%ztp’,], 
, 
Example,:, 
/mnt/usb/cumulus%ztp%powerpc%cel_smallstone%rUNKNOWN,, 
/mnt/usb/cumulus%ztp%powerpc%cel_smallstone,, 
/mnt/usb/cumulus%ztp%cel_smallstone,, 
/mnt/usb/cumulus%ztp%powerpc,, 
/mnt/usb/cumulus%ztp,
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/demo.sh";& 
! },
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
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, 
, 
,
Video
/var/lib/cumulus/autoprovision.conf 
! [discovery], 
! count,=,1, 
! max,=,32, 
! [provisioning], 
! enabled,=,True, 
! complete&=&True& 
! datetime,=,1413314146, 
! method,=,DHCP,Option, 
! detail,=,http://192.168.0.1/provision.sh,
! Because Debian based, we can do everything via 
puppet 
! users 
! interface configuration 
! routing software (Quagga) configuration 
Puppet
Video!
ZTP Example with Ansible 
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,URL="http://wbench.lab.local/ansible_authorized_keys”, 
9,mkdir,%p,/root/.ssh, 
10,, 
11,/usr/bin/wget,%O,/root/.ssh/authorized_keys,$URL, 
12,, 
13,#CUMULUS%AUTOPROVISIONING, 
14,exit,0,,
Video
Success!
Find out more! 
! ZTP 
! http://cumulusnetworks.com/docs/2.2/user-guide/ 
system_management_diagnostics/provisioning.html 
Example Code 
! https://github.com/CumulusNetworks/cldemo 
Cumulus Workbench 
! http://cumulusnetworks.com/cumulus-workbench/ 
Twitter 
! @lesliegeek
Bringing the Linux Revolution to Networking 
! Thank You! 
© 2014 Cumulus Networks. Cumulus Networks, the Cumulus Networks Logo, and Cumulus Linux are trademarks or registered trademarks of Cumulus Networks, Inc. or its 
affiliates in the U.S. and other countries. Other names may be trademarks of their respective owners. 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. 
cumulusnetworks.com

More Related Content

What's hot

Configuring Zero Touch Provisioning in Branch Networks
Configuring Zero Touch Provisioning in Branch NetworksConfiguring Zero Touch Provisioning in Branch Networks
Configuring Zero Touch Provisioning in Branch NetworksJuniper Networks
 
EPG PGW SAPC SACC PISC Configuration
EPG PGW SAPC SACC PISC ConfigurationEPG PGW SAPC SACC PISC Configuration
EPG PGW SAPC SACC PISC ConfigurationMustafa Golam
 
Telemetry事始め
Telemetry事始めTelemetry事始め
Telemetry事始めnpsg
 
Network Design Implications of QoS and QoE
Network Design Implications of QoS and QoENetwork Design Implications of QoS and QoE
Network Design Implications of QoS and QoEMusTufa Nullwala
 
Lessons Learned: Implementing VoLTE Roaming
Lessons Learned: Implementing VoLTE Roaming Lessons Learned: Implementing VoLTE Roaming
Lessons Learned: Implementing VoLTE Roaming Syniverse
 
Next generation OSS/BSS architecture
Next generation OSS/BSS architectureNext generation OSS/BSS architecture
Next generation OSS/BSS architectureEricsson
 
Oss transformation
Oss transformationOss transformation
Oss transformationRiswan
 
Huawei hss9860 v900 r008c20 production description
Huawei hss9860 v900 r008c20 production descriptionHuawei hss9860 v900 r008c20 production description
Huawei hss9860 v900 r008c20 production descriptionRabih Kanaan,PMP
 
Lessons Learned: Implementing VoLTE Roaming APAC
Lessons Learned: Implementing VoLTE Roaming APAC Lessons Learned: Implementing VoLTE Roaming APAC
Lessons Learned: Implementing VoLTE Roaming APAC Syniverse
 
Introduction to Rakuten Mobile Virtual Network Operator
Introduction to Rakuten Mobile Virtual Network OperatorIntroduction to Rakuten Mobile Virtual Network Operator
Introduction to Rakuten Mobile Virtual Network OperatorKAILASH CHAUHAN
 
Nitin jain CV - Packet Core/EPC, Virtualization/Cloud
Nitin jain CV - Packet Core/EPC, Virtualization/CloudNitin jain CV - Packet Core/EPC, Virtualization/Cloud
Nitin jain CV - Packet Core/EPC, Virtualization/CloudNitin Jain
 
製造業向けSmart Factoryデモと 関連AWSサービスのご紹介
製造業向けSmart Factoryデモと 関連AWSサービスのご紹介製造業向けSmart Factoryデモと 関連AWSサービスのご紹介
製造業向けSmart Factoryデモと 関連AWSサービスのご紹介Amazon Web Services Japan
 
2G / 3G / 4G / IMS / 5G Overview with Focus on Core Network
2G / 3G / 4G / IMS / 5G Overview with Focus on Core Network2G / 3G / 4G / IMS / 5G Overview with Focus on Core Network
2G / 3G / 4G / IMS / 5G Overview with Focus on Core NetworkHamidreza Bolhasani
 
LTE network: How it all comes together architecture technical poster
LTE network: How it all comes together architecture technical posterLTE network: How it all comes together architecture technical poster
LTE network: How it all comes together architecture technical posterDavid Swift
 
Network access control (nac)
Network access control (nac)Network access control (nac)
Network access control (nac)cyberlocke
 
KubeConEU - NATS Deep Dive
KubeConEU - NATS Deep DiveKubeConEU - NATS Deep Dive
KubeConEU - NATS Deep Divewallyqs
 
Introduction to Mobile Core Network
Introduction to Mobile Core NetworkIntroduction to Mobile Core Network
Introduction to Mobile Core Networkyusufd
 
AWS Wavelengthと大阪リージョンのご紹介20210414
AWS Wavelengthと大阪リージョンのご紹介20210414AWS Wavelengthと大阪リージョンのご紹介20210414
AWS Wavelengthと大阪リージョンのご紹介20210414Amazon Web Services Japan
 

What's hot (20)

Configuring Zero Touch Provisioning in Branch Networks
Configuring Zero Touch Provisioning in Branch NetworksConfiguring Zero Touch Provisioning in Branch Networks
Configuring Zero Touch Provisioning in Branch Networks
 
EPG PGW SAPC SACC PISC Configuration
EPG PGW SAPC SACC PISC ConfigurationEPG PGW SAPC SACC PISC Configuration
EPG PGW SAPC SACC PISC Configuration
 
Telemetry事始め
Telemetry事始めTelemetry事始め
Telemetry事始め
 
Network Design Implications of QoS and QoE
Network Design Implications of QoS and QoENetwork Design Implications of QoS and QoE
Network Design Implications of QoS and QoE
 
Lessons Learned: Implementing VoLTE Roaming
Lessons Learned: Implementing VoLTE Roaming Lessons Learned: Implementing VoLTE Roaming
Lessons Learned: Implementing VoLTE Roaming
 
Next generation OSS/BSS architecture
Next generation OSS/BSS architectureNext generation OSS/BSS architecture
Next generation OSS/BSS architecture
 
Oss transformation
Oss transformationOss transformation
Oss transformation
 
Huawei hss9860 v900 r008c20 production description
Huawei hss9860 v900 r008c20 production descriptionHuawei hss9860 v900 r008c20 production description
Huawei hss9860 v900 r008c20 production description
 
Lessons Learned: Implementing VoLTE Roaming APAC
Lessons Learned: Implementing VoLTE Roaming APAC Lessons Learned: Implementing VoLTE Roaming APAC
Lessons Learned: Implementing VoLTE Roaming APAC
 
Introduction to Rakuten Mobile Virtual Network Operator
Introduction to Rakuten Mobile Virtual Network OperatorIntroduction to Rakuten Mobile Virtual Network Operator
Introduction to Rakuten Mobile Virtual Network Operator
 
Nitin jain CV - Packet Core/EPC, Virtualization/Cloud
Nitin jain CV - Packet Core/EPC, Virtualization/CloudNitin jain CV - Packet Core/EPC, Virtualization/Cloud
Nitin jain CV - Packet Core/EPC, Virtualization/Cloud
 
製造業向けSmart Factoryデモと 関連AWSサービスのご紹介
製造業向けSmart Factoryデモと 関連AWSサービスのご紹介製造業向けSmart Factoryデモと 関連AWSサービスのご紹介
製造業向けSmart Factoryデモと 関連AWSサービスのご紹介
 
2G / 3G / 4G / IMS / 5G Overview with Focus on Core Network
2G / 3G / 4G / IMS / 5G Overview with Focus on Core Network2G / 3G / 4G / IMS / 5G Overview with Focus on Core Network
2G / 3G / 4G / IMS / 5G Overview with Focus on Core Network
 
LTE network: How it all comes together architecture technical poster
LTE network: How it all comes together architecture technical posterLTE network: How it all comes together architecture technical poster
LTE network: How it all comes together architecture technical poster
 
Network access control (nac)
Network access control (nac)Network access control (nac)
Network access control (nac)
 
Nephio 101
Nephio 101Nephio 101
Nephio 101
 
KubeConEU - NATS Deep Dive
KubeConEU - NATS Deep DiveKubeConEU - NATS Deep Dive
KubeConEU - NATS Deep Dive
 
Introduction to Mobile Core Network
Introduction to Mobile Core NetworkIntroduction to Mobile Core Network
Introduction to Mobile Core Network
 
AWS Wavelengthと大阪リージョンのご紹介20210414
AWS Wavelengthと大阪リージョンのご紹介20210414AWS Wavelengthと大阪リージョンのご紹介20210414
AWS Wavelengthと大阪リージョンのご紹介20210414
 
「ネットワーク超入門 IPsec VPN編」
「ネットワーク超入門 IPsec VPN編」「ネットワーク超入門 IPsec VPN編」
「ネットワーク超入門 IPsec VPN編」
 

Similar to Unattended Deployment with Zero Touch Provisioning (ZTP)

The Switch as a Server - PuppetConf 2014
The Switch as a Server - PuppetConf 2014The Switch as a Server - PuppetConf 2014
The Switch as a Server - PuppetConf 2014Puppet
 
Switch as a Server - PuppetConf 2014 - Leslie Carr
Switch as a Server - PuppetConf 2014 - Leslie CarrSwitch as a Server - PuppetConf 2014 - Leslie Carr
Switch as a Server - PuppetConf 2014 - Leslie CarrCumulus Networks
 
NFD9 - Matt Peterson, Data Center Operations
NFD9 - Matt Peterson, Data Center OperationsNFD9 - Matt Peterson, Data Center Operations
NFD9 - Matt Peterson, Data Center OperationsCumulus Networks
 
How to deploy PHP projects with docker
How to deploy PHP projects with dockerHow to deploy PHP projects with docker
How to deploy PHP projects with dockerRuoshi Ling
 
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationThe Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationErica Windisch
 
lamp technology
lamp technologylamp technology
lamp technologyDeepa
 
Deepa ppt about lamp technology
Deepa ppt about lamp technologyDeepa ppt about lamp technology
Deepa ppt about lamp technologyDeepa
 
Network Stack in Userspace (NUSE)
Network Stack in Userspace (NUSE)Network Stack in Userspace (NUSE)
Network Stack in Userspace (NUSE)Hajime Tazaki
 
Puppet Camp Charlotte 2015: Manage Your Switches Like Servers
Puppet Camp Charlotte 2015: Manage Your Switches Like ServersPuppet Camp Charlotte 2015: Manage Your Switches Like Servers
Puppet Camp Charlotte 2015: Manage Your Switches Like ServersPuppet
 
Docker module 1
Docker module 1Docker module 1
Docker module 1Liang Bo
 
OpenShift 4 installation
OpenShift 4 installationOpenShift 4 installation
OpenShift 4 installationRobert Bohne
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Hyun-Mook Choi
 
Phoenix Servers with Docker and Nginx
Phoenix Servers with Docker and NginxPhoenix Servers with Docker and Nginx
Phoenix Servers with Docker and NginxNils De Moor
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectYen-Chin Lee
 
Building Docker images with Puppet
Building Docker images with PuppetBuilding Docker images with Puppet
Building Docker images with PuppetNick Jones
 
Baylisa - Dive Into OpenStack
Baylisa - Dive Into OpenStackBaylisa - Dive Into OpenStack
Baylisa - Dive Into OpenStackJesse Andrews
 
Midwest php 2013 deploying php on paas- why & how
Midwest php 2013   deploying php on paas- why & howMidwest php 2013   deploying php on paas- why & how
Midwest php 2013 deploying php on paas- why & howdotCloud
 

Similar to Unattended Deployment with Zero Touch Provisioning (ZTP) (20)

The Switch as a Server - PuppetConf 2014
The Switch as a Server - PuppetConf 2014The Switch as a Server - PuppetConf 2014
The Switch as a Server - PuppetConf 2014
 
Switch as a Server - PuppetConf 2014 - Leslie Carr
Switch as a Server - PuppetConf 2014 - Leslie CarrSwitch as a Server - PuppetConf 2014 - Leslie Carr
Switch as a Server - PuppetConf 2014 - Leslie Carr
 
NFD9 - Matt Peterson, Data Center Operations
NFD9 - Matt Peterson, Data Center OperationsNFD9 - Matt Peterson, Data Center Operations
NFD9 - Matt Peterson, Data Center Operations
 
How to deploy PHP projects with docker
How to deploy PHP projects with dockerHow to deploy PHP projects with docker
How to deploy PHP projects with docker
 
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationThe Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
 
Erlang on OSv
Erlang on OSvErlang on OSv
Erlang on OSv
 
lamp technology
lamp technologylamp technology
lamp technology
 
Deepa ppt about lamp technology
Deepa ppt about lamp technologyDeepa ppt about lamp technology
Deepa ppt about lamp technology
 
Network Stack in Userspace (NUSE)
Network Stack in Userspace (NUSE)Network Stack in Userspace (NUSE)
Network Stack in Userspace (NUSE)
 
Docker 101
Docker 101 Docker 101
Docker 101
 
Puppet Camp Charlotte 2015: Manage Your Switches Like Servers
Puppet Camp Charlotte 2015: Manage Your Switches Like ServersPuppet Camp Charlotte 2015: Manage Your Switches Like Servers
Puppet Camp Charlotte 2015: Manage Your Switches Like Servers
 
Docker module 1
Docker module 1Docker module 1
Docker module 1
 
OpenShift 4 installation
OpenShift 4 installationOpenShift 4 installation
OpenShift 4 installation
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부
 
Phoenix Servers with Docker and Nginx
Phoenix Servers with Docker and NginxPhoenix Servers with Docker and Nginx
Phoenix Servers with Docker and Nginx
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
 
Building Docker images with Puppet
Building Docker images with PuppetBuilding Docker images with Puppet
Building Docker images with Puppet
 
Docker-v3.pdf
Docker-v3.pdfDocker-v3.pdf
Docker-v3.pdf
 
Baylisa - Dive Into OpenStack
Baylisa - Dive Into OpenStackBaylisa - Dive Into OpenStack
Baylisa - Dive Into OpenStack
 
Midwest php 2013 deploying php on paas- why & how
Midwest php 2013   deploying php on paas- why & howMidwest php 2013   deploying php on paas- why & how
Midwest php 2013 deploying php on paas- why & how
 

More from Cumulus Networks

Building a Layer 3 network with Cumulus Linux
Building a Layer 3 network with Cumulus LinuxBuilding a Layer 3 network with Cumulus Linux
Building a Layer 3 network with Cumulus LinuxCumulus Networks
 
Operationalizing EVPN in the Data Center: Part 2
Operationalizing EVPN in the Data Center: Part 2Operationalizing EVPN in the Data Center: Part 2
Operationalizing EVPN in the Data Center: Part 2Cumulus Networks
 
Demystifying EVPN in the data center: Part 1 in 2 episode series
Demystifying EVPN in the data center: Part 1 in 2 episode seriesDemystifying EVPN in the data center: Part 1 in 2 episode series
Demystifying EVPN in the data center: Part 1 in 2 episode seriesCumulus Networks
 
Best practices for network troubleshooting
Best practices for network troubleshootingBest practices for network troubleshooting
Best practices for network troubleshootingCumulus Networks
 
NetDevOps 202: Life After Configuration
NetDevOps 202: Life After ConfigurationNetDevOps 202: Life After Configuration
NetDevOps 202: Life After ConfigurationCumulus Networks
 
Cumulus Networks: Automating Network Configuration
Cumulus Networks: Automating Network ConfigurationCumulus Networks: Automating Network Configuration
Cumulus Networks: Automating Network ConfigurationCumulus Networks
 
How deep is your buffer – Demystifying buffers and application performance
How deep is your buffer – Demystifying buffers and application performanceHow deep is your buffer – Demystifying buffers and application performance
How deep is your buffer – Demystifying buffers and application performanceCumulus Networks
 
Demystifying Networking: Data Center Networking Trends 2017
Demystifying Networking: Data Center Networking Trends 2017Demystifying Networking: Data Center Networking Trends 2017
Demystifying Networking: Data Center Networking Trends 2017Cumulus Networks
 
Building Scalable Data Center Networks
Building Scalable Data Center NetworksBuilding Scalable Data Center Networks
Building Scalable Data Center NetworksCumulus Networks
 
Network Architecture for Containers
Network Architecture for ContainersNetwork Architecture for Containers
Network Architecture for ContainersCumulus Networks
 
Webinar: Network Automation [Tips & Tricks]
Webinar: Network Automation [Tips & Tricks]Webinar: Network Automation [Tips & Tricks]
Webinar: Network Automation [Tips & Tricks]Cumulus Networks
 
July NYC Open Networking Meeup
July NYC Open Networking MeeupJuly NYC Open Networking Meeup
July NYC Open Networking MeeupCumulus Networks
 
Demystifying Networking Webinar Series- Routing on the Host
Demystifying Networking Webinar Series- Routing on the HostDemystifying Networking Webinar Series- Routing on the Host
Demystifying Networking Webinar Series- Routing on the HostCumulus Networks
 
Ifupdown2: Network Interface Manager
Ifupdown2: Network Interface ManagerIfupdown2: Network Interface Manager
Ifupdown2: Network Interface ManagerCumulus Networks
 
Operationalizing VRF in the Data Center
Operationalizing VRF in the Data CenterOperationalizing VRF in the Data Center
Operationalizing VRF in the Data CenterCumulus Networks
 
Microservices Network Architecture 101
Microservices Network Architecture 101Microservices Network Architecture 101
Microservices Network Architecture 101Cumulus Networks
 
Linux networking is Awesome!
Linux networking is Awesome!Linux networking is Awesome!
Linux networking is Awesome!Cumulus Networks
 
Webinar-Linux Networking is Awesome
Webinar-Linux Networking is AwesomeWebinar-Linux Networking is Awesome
Webinar-Linux Networking is AwesomeCumulus Networks
 
Webinar- Tea for the Tillerman
Webinar- Tea for the TillermanWebinar- Tea for the Tillerman
Webinar- Tea for the TillermanCumulus Networks
 
Dreamhost deploying dreamcompute at scale
Dreamhost deploying dreamcompute at scaleDreamhost deploying dreamcompute at scale
Dreamhost deploying dreamcompute at scaleCumulus Networks
 

More from Cumulus Networks (20)

Building a Layer 3 network with Cumulus Linux
Building a Layer 3 network with Cumulus LinuxBuilding a Layer 3 network with Cumulus Linux
Building a Layer 3 network with Cumulus Linux
 
Operationalizing EVPN in the Data Center: Part 2
Operationalizing EVPN in the Data Center: Part 2Operationalizing EVPN in the Data Center: Part 2
Operationalizing EVPN in the Data Center: Part 2
 
Demystifying EVPN in the data center: Part 1 in 2 episode series
Demystifying EVPN in the data center: Part 1 in 2 episode seriesDemystifying EVPN in the data center: Part 1 in 2 episode series
Demystifying EVPN in the data center: Part 1 in 2 episode series
 
Best practices for network troubleshooting
Best practices for network troubleshootingBest practices for network troubleshooting
Best practices for network troubleshooting
 
NetDevOps 202: Life After Configuration
NetDevOps 202: Life After ConfigurationNetDevOps 202: Life After Configuration
NetDevOps 202: Life After Configuration
 
Cumulus Networks: Automating Network Configuration
Cumulus Networks: Automating Network ConfigurationCumulus Networks: Automating Network Configuration
Cumulus Networks: Automating Network Configuration
 
How deep is your buffer – Demystifying buffers and application performance
How deep is your buffer – Demystifying buffers and application performanceHow deep is your buffer – Demystifying buffers and application performance
How deep is your buffer – Demystifying buffers and application performance
 
Demystifying Networking: Data Center Networking Trends 2017
Demystifying Networking: Data Center Networking Trends 2017Demystifying Networking: Data Center Networking Trends 2017
Demystifying Networking: Data Center Networking Trends 2017
 
Building Scalable Data Center Networks
Building Scalable Data Center NetworksBuilding Scalable Data Center Networks
Building Scalable Data Center Networks
 
Network Architecture for Containers
Network Architecture for ContainersNetwork Architecture for Containers
Network Architecture for Containers
 
Webinar: Network Automation [Tips & Tricks]
Webinar: Network Automation [Tips & Tricks]Webinar: Network Automation [Tips & Tricks]
Webinar: Network Automation [Tips & Tricks]
 
July NYC Open Networking Meeup
July NYC Open Networking MeeupJuly NYC Open Networking Meeup
July NYC Open Networking Meeup
 
Demystifying Networking Webinar Series- Routing on the Host
Demystifying Networking Webinar Series- Routing on the HostDemystifying Networking Webinar Series- Routing on the Host
Demystifying Networking Webinar Series- Routing on the Host
 
Ifupdown2: Network Interface Manager
Ifupdown2: Network Interface ManagerIfupdown2: Network Interface Manager
Ifupdown2: Network Interface Manager
 
Operationalizing VRF in the Data Center
Operationalizing VRF in the Data CenterOperationalizing VRF in the Data Center
Operationalizing VRF in the Data Center
 
Microservices Network Architecture 101
Microservices Network Architecture 101Microservices Network Architecture 101
Microservices Network Architecture 101
 
Linux networking is Awesome!
Linux networking is Awesome!Linux networking is Awesome!
Linux networking is Awesome!
 
Webinar-Linux Networking is Awesome
Webinar-Linux Networking is AwesomeWebinar-Linux Networking is Awesome
Webinar-Linux Networking is Awesome
 
Webinar- Tea for the Tillerman
Webinar- Tea for the TillermanWebinar- Tea for the Tillerman
Webinar- Tea for the Tillerman
 
Dreamhost deploying dreamcompute at scale
Dreamhost deploying dreamcompute at scaleDreamhost deploying dreamcompute at scale
Dreamhost deploying dreamcompute at scale
 

Recently uploaded

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringWSO2
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingWSO2
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...caitlingebhard1
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governanceWSO2
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....rightmanforbloodline
 

Recently uploaded (20)

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software Engineering
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 

Unattended Deployment with Zero Touch Provisioning (ZTP)

  • 1. v Unattended Datacenter Deployment with ZTP Leslie Carr October 15, 2014
  • 2. Who is Leslie? ! Operations Engineer ! Google ! Craigslist ! Twitter ! Wikimedia Foundation (Wikipedia)
  • 3. Who is Leslie? ! Cumulus Networks®
  • 4. 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
  • 5. Cumulus® Linux® Hardware Compatibility List cumulusnetworks.com 4
  • 6. v Installation and Configuration
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. Comparison Similar to installing a server OS using PXE app app app Server OS BIOS and PXE bare metal server app app app Network OS Boot Loader and ONIE bare metal switch ONIE looks for and installs network OS image boot into Network OS boot into Boot Loader and ONIE Boot Loader and ONIE
  • 11. Cumulus Linux OS Installation with ONIE ! 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%*, cumulusnetworks.com 10 1 2 Cumulus Linux OS image
  • 12. ZTP Execution ! ZTP script execution is triggered on DHClient exit or by USB Stick • USB support in releases 2.5 and up ! Script must contain CUMULUS%AUTOPROVISIONING,, ! Can be in the following languages : • Perl • Python • Ruby • Shell
  • 13. ZTP Script USB USB looks for a specific file name “waterfall” wate rfall,=,[, 'cumulus%ztp%',+,arch,+,'%',+,vendor,+,'_',+,model,+,'%r’,+,revision,, 'cumulus%ztp%',+,arch,+,'%',+,vendor,+,'_',+,model, 'cumulus%ztp%',+,vendor,+,'_',+,model, 'cumulus%ztp%',+,arch, 'cumulus%ztp’,], , Example,:, /mnt/usb/cumulus%ztp%powerpc%cel_smallstone%rUNKNOWN,, /mnt/usb/cumulus%ztp%powerpc%cel_smallstone,, /mnt/usb/cumulus%ztp%cel_smallstone,, /mnt/usb/cumulus%ztp%powerpc,, /mnt/usb/cumulus%ztp,
  • 14. 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/demo.sh";& ! },
  • 15. 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
  • 16. 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, , ,
  • 17. Video
  • 18. /var/lib/cumulus/autoprovision.conf ! [discovery], ! count,=,1, ! max,=,32, ! [provisioning], ! enabled,=,True, ! complete&=&True& ! datetime,=,1413314146, ! method,=,DHCP,Option, ! detail,=,http://192.168.0.1/provision.sh,
  • 19. ! Because Debian based, we can do everything via puppet ! users ! interface configuration ! routing software (Quagga) configuration Puppet
  • 21. ZTP Example with Ansible 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,URL="http://wbench.lab.local/ansible_authorized_keys”, 9,mkdir,%p,/root/.ssh, 10,, 11,/usr/bin/wget,%O,/root/.ssh/authorized_keys,$URL, 12,, 13,#CUMULUS%AUTOPROVISIONING, 14,exit,0,,
  • 22. Video
  • 24. Find out more! ! ZTP ! http://cumulusnetworks.com/docs/2.2/user-guide/ system_management_diagnostics/provisioning.html Example Code ! https://github.com/CumulusNetworks/cldemo Cumulus Workbench ! http://cumulusnetworks.com/cumulus-workbench/ Twitter ! @lesliegeek
  • 25. Bringing the Linux Revolution to Networking ! Thank You! © 2014 Cumulus Networks. Cumulus Networks, the Cumulus Networks Logo, and Cumulus Linux are trademarks or registered trademarks of Cumulus Networks, Inc. or its affiliates in the U.S. and other countries. Other names may be trademarks of their respective owners. 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. cumulusnetworks.com