Over the past year, Razor has shown that there is huge demand for a policy-driven, discovery-based provisioning solution for bare metal and virtualized hardware. Simply put, Razor is the tool of choice to go from zero to fully-installed, including handoff to Puppet, in the most flexible and DevOps friendly way.
Based on our experience, we have revamped Razor significantly with an eye towards easier deployment and maintenance, more flexibility in describing the provisioning process, and more robust hardware support. This talk will explain what has changed (all the things that made Razor hard to deploy), what has stayed the same (all the cool features unique to Razor), and where we see Razor's journey going from here.
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.
Hinweis der Redaktion
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