SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
Stupid Boot Tricks
Jason Cook - @macros - jason@fastly.com
Me
• Co-founder and Principal Engineer at Fastly	

• Former Operations Engineer at Wikia	

• Lots of Sysadmin and Linux consulting
A little history
First Racks (the bad old days)
• 2-6 machines per location	

• Installs over ipmi	

• Organic growth	

• No local management infrastructure
Scaling Up and Out
Fastly “Mega” Design
• Single platform for caching clusters	

• Deployed as a unit, limited to no incremental growth	

• Same components for 4 to 32 machine clusters	

• Able to justify management infrastructure	

• Able to lean on convention
The “oob” machine
• Private link to internet	

• Provides local provisioning	

• DHCP	

• Squid	

• Donner
Existing Tools
• Cobbler	

• Razor	

• Foreman
Why not existing?
• 20+ "datacenters"	

• No backbone/internal network	

• Too many moving pieces	

• Host network complexity
Donner
• Sinatra app and cookbook for booting things over http	

• iPXE	

• Chef as datastore	

• Open Source soon (stupid heartbleed)
iPXE
• Open Source implementation of pxe	

• Formerly known as both gPXE and Etherboot	

• ROM image that can be burned into firmware	

• Can boot off floppy/usb/hard/other pxe as well
Why iPXE?
• Boot of more than just tftp targets	

• http, iSCSI,ATAoE, Fiber Channel	

• Scriptable	

• Minimal hardware and network inventory data
Why Chef for the datastore?
• Already available as a common service	

• Multiple sources of truth suck	

• Databags as integration point
Why databags?
• Hardware lifecycle is independent from the node object	

• Searchable	

• Easy to consume from other tools
Partial Search?
• Fast	

• Somewhat convenient API	

• I’m too lazy to deal with the databag api for reads
The Workflow
• Shipment Manifest	

• Racking/Cabling	

• Map Serial to Real World Location	

• Power on machines and wait
Vendor Data
• For each shipment vendor provides a spreadsheet	

• Serial number	

• mac addresses	

• Converted to data bag entries
Inventory Data Bag
{	

"environment": "production",	

"datacenter": "LCY",	

"id": "cache-lcy1122",	

"mac":“00:25:90:86:91:d8”,	

"hostname": "cache-lcy1122",	

"publicip": "185.31.18.22",	

"mgmtip": "172.16.6.22",	

"profile": "mega16"	

}
Site Details
• Racking/Cabling done by remote hands	

• Labels applied to physical position	

• Labels mapped to serial numbers in data bags
From Bare Metal to Chef
1. Get address	

2. Assign boot image	

3. Build installer config	

4. Build post-install config	

5. Install	

6. Run chef on first boot
Getting iPXE in your pxe
• ISC dhcpd can do conditional responses
subnet 172.16.16.0 netmask 255.255.255.0 {	

range 172.16.16.225 172.16.16.254;	

if exists user-class and option user-class = "iPXE" {	

filename “http://172.16.16.7/images/dhcpd.ipxe”;	

} if-else substring(hardware, 1, 3) = 01:1C:73 {	

option bootfile-name “http://172.16.16.7:1080/ztp”;	

} else {	

filename "undionly.kpxe";	

}	

option routers 172.16.16.7;	

option domain-name-servers 172.16.16.7;	

}
Scripting the boot image
#!ipxe	

!
:net	

isset ${net0/mac} && dhcp net0 || goto target	

set dhcp_mac ${net0/mac:hexhyp}	

!
:target	

chain http://172.16.16.7:1180/pxe/${dhcp_mac} || goto error	

!
:error	

sleep 15	

goto net
Booting the installer
#!ipxe	

echo Installation node: <%= @machine['hostname'] %>	

!
sleep 3	

kernel http://<%= @serverip %>/images/<%= @image['kernel'] %> <%= @bootargs %> || goto error	

initrd http://<%= @serverip %>/images/<%= @image['initrd'] %> || goto error	

boot	

!
:error	

echo Something went wrong, dropping to a shell…	

shell
The Install
• Ubuntu with preseed in our case	

• Another erb template	

• Nothing special here
The post-install
• Annoying amount of our magic happens here	

• Lots of netconfig the installer can’t handle	

• Install internal apt keys and repos	

• Install our chef package and kernels	

• Configure chef for first boot	

• Generated from a template with access to chef objects
For more than just installers
• BIOS/Firmware Update ISOs	

• Boot a live debug image	

• Network Gear
Boot an ISO
FreeDOS ISO + vendor firmware
#!ipxe	

echo Installing Supermicro Firmware for: <%= @machine['hostname'] %>	

!
sleep 3	

initrd http://<%= @serverip %>/images/current_firmware.iso || goto error	

kernel http://<%= @serverip %>/images/memdisk.iso || goto error	

boot	

!
:error	

echo Something went wrong, dropping to a shell…	

shell
Network Gear	

• Arista Supports dhcp + http
get '/ztp' do	

mac = request['X-Arista-SystemMAC']	

@device = lookup_device(mac)	

erb :ztp	

end
Thanks!
Jason Cook	

jason@fastly.com	

@macros

Weitere ähnliche Inhalte

Was ist angesagt?

Interactive web. O rly?
Interactive web. O rly?Interactive web. O rly?
Interactive web. O rly?
timbc
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011
Tatsuhiko Miyagawa
 

Was ist angesagt? (20)

Caching the Uncacheable [Long Version]
Caching the Uncacheable [Long Version]Caching the Uncacheable [Long Version]
Caching the Uncacheable [Long Version]
 
Interactive web. O rly?
Interactive web. O rly?Interactive web. O rly?
Interactive web. O rly?
 
I can't believe it's not a queue: Kafka and Spring
I can't believe it's not a queue: Kafka and SpringI can't believe it's not a queue: Kafka and Spring
I can't believe it's not a queue: Kafka and Spring
 
PHP conference Berlin 2015: running PHP on Nginx
PHP conference Berlin 2015: running PHP on NginxPHP conference Berlin 2015: running PHP on Nginx
PHP conference Berlin 2015: running PHP on Nginx
 
Running php on nginx
Running php on nginxRunning php on nginx
Running php on nginx
 
Async and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyAsync and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRuby
 
Plack basics for Perl websites - YAPC::EU 2011
Plack basics for Perl websites - YAPC::EU 2011Plack basics for Perl websites - YAPC::EU 2011
Plack basics for Perl websites - YAPC::EU 2011
 
Extending Your Applications to the Edge with CDNs
Extending Your Applications to the Edge with CDNsExtending Your Applications to the Edge with CDNs
Extending Your Applications to the Edge with CDNs
 
Host Health Monitoring with Docker Run
Host Health Monitoring with Docker RunHost Health Monitoring with Docker Run
Host Health Monitoring with Docker Run
 
NYC Cassandra Day - Java Intro
NYC Cassandra Day - Java IntroNYC Cassandra Day - Java Intro
NYC Cassandra Day - Java Intro
 
Building Scalable Websites with Perl
Building Scalable Websites with PerlBuilding Scalable Websites with Perl
Building Scalable Websites with Perl
 
Caching the uncacheable with Varnish - DevDays 2021
Caching the uncacheable with Varnish - DevDays 2021Caching the uncacheable with Varnish - DevDays 2021
Caching the uncacheable with Varnish - DevDays 2021
 
Keybase Vault Auto-Unseal HashiTalks2020
Keybase Vault Auto-Unseal HashiTalks2020Keybase Vault Auto-Unseal HashiTalks2020
Keybase Vault Auto-Unseal HashiTalks2020
 
Introduction to performance tuning perl web applications
Introduction to performance tuning perl web applicationsIntroduction to performance tuning perl web applications
Introduction to performance tuning perl web applications
 
Autoscaling with hashi_corp_nomad
Autoscaling with hashi_corp_nomadAutoscaling with hashi_corp_nomad
Autoscaling with hashi_corp_nomad
 
WordPress + NGINX Best Practices with EasyEngine
WordPress + NGINX Best Practices with EasyEngineWordPress + NGINX Best Practices with EasyEngine
WordPress + NGINX Best Practices with EasyEngine
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011
 
Microservices blue-green-deployment-with-docker
Microservices blue-green-deployment-with-dockerMicroservices blue-green-deployment-with-docker
Microservices blue-green-deployment-with-docker
 
Varnish 4 cool features
Varnish 4 cool featuresVarnish 4 cool features
Varnish 4 cool features
 
The Good Parts / The Hard Parts
The Good Parts / The Hard PartsThe Good Parts / The Hard Parts
The Good Parts / The Hard Parts
 

Ähnlich wie Stupid Boot Tricks: using ipxe and chef to get to boot management bliss

Tuning Your SharePoint Environment
Tuning Your SharePoint EnvironmentTuning Your SharePoint Environment
Tuning Your SharePoint Environment
vmaximiuk
 

Ähnlich wie Stupid Boot Tricks: using ipxe and chef to get to boot management bliss (20)

Achieving Infrastructure Portability with Chef
Achieving Infrastructure Portability with ChefAchieving Infrastructure Portability with Chef
Achieving Infrastructure Portability with Chef
 
OpenStack Deployments with Chef
OpenStack Deployments with ChefOpenStack Deployments with Chef
OpenStack Deployments with Chef
 
Chef for OpenStack - OpenStack Fall 2012 Summit
Chef for OpenStack  - OpenStack Fall 2012 SummitChef for OpenStack  - OpenStack Fall 2012 Summit
Chef for OpenStack - OpenStack Fall 2012 Summit
 
Chef for OpenStack- Fall 2012.pdf
Chef for OpenStack- Fall 2012.pdfChef for OpenStack- Fall 2012.pdf
Chef for OpenStack- Fall 2012.pdf
 
Ironic 140622212631-phpapp02
Ironic 140622212631-phpapp02Ironic 140622212631-phpapp02
Ironic 140622212631-phpapp02
 
Ironic
IronicIronic
Ironic
 
Ironic 140622212631-phpapp02
Ironic 140622212631-phpapp02Ironic 140622212631-phpapp02
Ironic 140622212631-phpapp02
 
Top ten-list
Top ten-listTop ten-list
Top ten-list
 
JavaScript Event Loop
JavaScript Event LoopJavaScript Event Loop
JavaScript Event Loop
 
Australian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackAustralian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStack
 
Automating Complex Setups with Puppet
Automating Complex Setups with PuppetAutomating Complex Setups with Puppet
Automating Complex Setups with Puppet
 
Google Cloud Platform for DeVops, by Javier Ramirez @ teowaki
Google Cloud Platform for DeVops, by Javier Ramirez @ teowakiGoogle Cloud Platform for DeVops, by Javier Ramirez @ teowaki
Google Cloud Platform for DeVops, by Javier Ramirez @ teowaki
 
Kubernetes - Hosted OSG Services
Kubernetes - Hosted OSG ServicesKubernetes - Hosted OSG Services
Kubernetes - Hosted OSG Services
 
Webinar - DreamObjects/Ceph Case Study
Webinar - DreamObjects/Ceph Case StudyWebinar - DreamObjects/Ceph Case Study
Webinar - DreamObjects/Ceph Case Study
 
Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?
 
Practical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsPractical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.js
 
Glynn Bird – Cloudant – Building applications for success.- NoSQL matters Bar...
Glynn Bird – Cloudant – Building applications for success.- NoSQL matters Bar...Glynn Bird – Cloudant – Building applications for success.- NoSQL matters Bar...
Glynn Bird – Cloudant – Building applications for success.- NoSQL matters Bar...
 
Capacity Planning for fun & profit
Capacity Planning for fun & profitCapacity Planning for fun & profit
Capacity Planning for fun & profit
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
Tuning Your SharePoint Environment
Tuning Your SharePoint EnvironmentTuning Your SharePoint Environment
Tuning Your SharePoint Environment
 

Kürzlich hochgeladen

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
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Kürzlich hochgeladen (20)

AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
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
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
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
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 

Stupid Boot Tricks: using ipxe and chef to get to boot management bliss

  • 1. Stupid Boot Tricks Jason Cook - @macros - jason@fastly.com
  • 2. Me • Co-founder and Principal Engineer at Fastly • Former Operations Engineer at Wikia • Lots of Sysadmin and Linux consulting
  • 3.
  • 5. First Racks (the bad old days) • 2-6 machines per location • Installs over ipmi • Organic growth • No local management infrastructure
  • 7.
  • 8. Fastly “Mega” Design • Single platform for caching clusters • Deployed as a unit, limited to no incremental growth • Same components for 4 to 32 machine clusters • Able to justify management infrastructure • Able to lean on convention
  • 9.
  • 10. The “oob” machine • Private link to internet • Provides local provisioning • DHCP • Squid • Donner
  • 11. Existing Tools • Cobbler • Razor • Foreman
  • 12. Why not existing? • 20+ "datacenters" • No backbone/internal network • Too many moving pieces • Host network complexity
  • 13. Donner • Sinatra app and cookbook for booting things over http • iPXE • Chef as datastore • Open Source soon (stupid heartbleed)
  • 14. iPXE • Open Source implementation of pxe • Formerly known as both gPXE and Etherboot • ROM image that can be burned into firmware • Can boot off floppy/usb/hard/other pxe as well
  • 15. Why iPXE? • Boot of more than just tftp targets • http, iSCSI,ATAoE, Fiber Channel • Scriptable • Minimal hardware and network inventory data
  • 16. Why Chef for the datastore? • Already available as a common service • Multiple sources of truth suck • Databags as integration point
  • 17. Why databags? • Hardware lifecycle is independent from the node object • Searchable • Easy to consume from other tools
  • 18. Partial Search? • Fast • Somewhat convenient API • I’m too lazy to deal with the databag api for reads
  • 19. The Workflow • Shipment Manifest • Racking/Cabling • Map Serial to Real World Location • Power on machines and wait
  • 20. Vendor Data • For each shipment vendor provides a spreadsheet • Serial number • mac addresses • Converted to data bag entries
  • 21. Inventory Data Bag { "environment": "production", "datacenter": "LCY", "id": "cache-lcy1122", "mac":“00:25:90:86:91:d8”, "hostname": "cache-lcy1122", "publicip": "185.31.18.22", "mgmtip": "172.16.6.22", "profile": "mega16" }
  • 22. Site Details • Racking/Cabling done by remote hands • Labels applied to physical position • Labels mapped to serial numbers in data bags
  • 23. From Bare Metal to Chef 1. Get address 2. Assign boot image 3. Build installer config 4. Build post-install config 5. Install 6. Run chef on first boot
  • 24. Getting iPXE in your pxe • ISC dhcpd can do conditional responses subnet 172.16.16.0 netmask 255.255.255.0 { range 172.16.16.225 172.16.16.254; if exists user-class and option user-class = "iPXE" { filename “http://172.16.16.7/images/dhcpd.ipxe”; } if-else substring(hardware, 1, 3) = 01:1C:73 { option bootfile-name “http://172.16.16.7:1080/ztp”; } else { filename "undionly.kpxe"; } option routers 172.16.16.7; option domain-name-servers 172.16.16.7; }
  • 25. Scripting the boot image #!ipxe ! :net isset ${net0/mac} && dhcp net0 || goto target set dhcp_mac ${net0/mac:hexhyp} ! :target chain http://172.16.16.7:1180/pxe/${dhcp_mac} || goto error ! :error sleep 15 goto net
  • 26. Booting the installer #!ipxe echo Installation node: <%= @machine['hostname'] %> ! sleep 3 kernel http://<%= @serverip %>/images/<%= @image['kernel'] %> <%= @bootargs %> || goto error initrd http://<%= @serverip %>/images/<%= @image['initrd'] %> || goto error boot ! :error echo Something went wrong, dropping to a shell… shell
  • 27. The Install • Ubuntu with preseed in our case • Another erb template • Nothing special here
  • 28. The post-install • Annoying amount of our magic happens here • Lots of netconfig the installer can’t handle • Install internal apt keys and repos • Install our chef package and kernels • Configure chef for first boot • Generated from a template with access to chef objects
  • 29. For more than just installers • BIOS/Firmware Update ISOs • Boot a live debug image • Network Gear
  • 30. Boot an ISO FreeDOS ISO + vendor firmware #!ipxe echo Installing Supermicro Firmware for: <%= @machine['hostname'] %> ! sleep 3 initrd http://<%= @serverip %>/images/current_firmware.iso || goto error kernel http://<%= @serverip %>/images/memdisk.iso || goto error boot ! :error echo Something went wrong, dropping to a shell… shell
  • 31. Network Gear • Arista Supports dhcp + http get '/ztp' do mac = request['X-Arista-SystemMAC'] @device = lookup_device(mac) erb :ztp end