Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fire It Up: How Empowered People Automated Provisioning in 6 Datacenters Across 4 Continents

Fire It Up: How Empowered People Automated Provisioning in 6 Datacenters Across 4 Continents

This talk is a case study of a group of Rackers who automated network device provisioning by leveraging new and existing services.

Josh Schairbaum

March 01, 2013
Tweet

More Decks by Josh Schairbaum

Other Decks in Technology

Transcript

  1. March 1, 2013 How Empowered People Automated Provisioning in 6

    Datacenters Across 4 Continents Fire It Up Friday, March 1, 13
  2. second, an enormously complicated group of gadgets designed to overcome

    the shortcomings of the original and achieving thereby somewhat satisfactory performance through extremely complex compromise; Friday, March 1, 13
  3. what about that web app thingy people used to manually

    generate configs of dubious quality? Friday, March 1, 13
  4. class Swimlanes::Discovery < Swimlane # ... omitted ... def perform

    DeviceDiscovery.run(device) rescue => error @errors << error raise error ensure Orchestration.notify(device, self) end end Friday, March 1, 13
  5. class KicksController < ApplicationController # ... omitted ... def create

    @kick_process = KickProcess.start(@device, params[:step]) respond_with(@kick_process) end end Friday, March 1, 13
  6. class KickProcess STEPS = { ‘1 - Discovery’ => [

    Swimlanes::Discovery ] } def self.start(device, step) kick_process = new(device, step) kick_process.start end def start STEPS[step].each do |action| action.perform(device) end self end end Friday, March 1, 13
  7. class DeviceDiscovery def self.run(device) device_discovery = new(device) device_discovery.run end def

    run switch = FE::Switch.discover(device) mac = switch.mac_address. select { |m| m == device.mac_address }.first FE::MacAddress.update(mac, device) end end Friday, March 1, 13
  8. class DeviceDiscovery def self.run(device) device_discovery = new(device) device_discovery.run end def

    run switch = Switch.discover(device) mac = MacAddress.discover(switch) MacAddressCorrelation. create(device, mac) end end Friday, March 1, 13