1. Razor
Provision like a boss
David Lutterkort
Principal Engineer | Puppet Labs
@lutterkort
lutter@puppetlabs.com
2. Who are you ?
• Joined Puppet Labs in May
• One of the first contributors to Puppet
• Started Augeas
• Apache Deltacloud, DMTF CIMI
• email: lutter@puppetlabs.com
• IRC: lutter, twitter: @lutterkort
3. Razor history
• Started by EMC/VMWare
• Nick Weaver, Tom McSweeney
• EMC World 2012
• PuppetConf 2012
7. Where is Razor going
• Rewrite for different stack
• Simplify deployment
• Simplify maintenance
• Simplify usage
Don’t muck with the good bits
8. The more it changes ...
• Node discovery with MK and facter
• Use ipxe to control boot
• Written in Ruby
• Flexible tag/rule-based policy match
• Simple handoff to Puppet
• Manage large number of nodes
12. Microkernel
• Separate MK agent from OS image
• Build on EL
• well-known hardware support
• formal support offerings
• currently ~ 150MB (unoptimized)
• Enable alternative MK builds
13. Server API
• JSON everywhere
• Query objects with RESTful interface
• Update/modify using commands (CQRS)
• all changes happen async
• Authentication [TODO]
17. Installers
• OS installation inherently linear
• Completely in metadata
• file based or in DB
• Simple node/server API
• evaluate and fetch ERB template
• store a value (e.g., IP address)
• log a message
18. Installer example
---
# redhat.yaml
os: Red Hat Enterprise Linux
os_version: 6
description: Red Hat EL installer
boot_sequence:
1: boot_install
default: boot_local
26. Follow us on Twitter @puppetlabs
youtube.com/puppetlabsinc
slideshare.net/puppetlabs
Collaborate. Automate. Ship.
Notas del editor
Existing systems: get very personal with each server Need MAC Selection out-of-band
What happens when a node boots with Razor - TFTP -> Razor server - boot MK - checkin/facts - tag & apply policy - reboot into installer - hand off to broker
- Deploying easy & well understood - Setup Postgres - gem install ...
Application server for Ruby Support for Sinatra/Rails apps jRuby JBoss AS Install from gem (~ 60MB)
Control what gets installed match nodes and policies using tags Tie various objects together image/installer some metadata (hostname/root password)IP address pool [TODO] max. count