Razor: provision like a boss (Build-a-cloud edition)
1. Razor - Provision like a boss
David Lutterkort
lutter@puppetlabs.com
@lutterkort
2. PXE provisioning – satisfaction rating
Rage
Atrocious
Horrible
Meh
How satisfied are you with your PXE installation solution ?
(representative sample of imaginary users)
16. Tags
• A named match rule
• Rules can have complex logic
[“or”,
[“in”, [“fact”, “macaddress”],
“de:ad:be:ef:00:01”,
“de:ad:be:ef:00:02”],
[“=”, “2”, [“fact”, “processorcount”]]]
16
31. Don’t be a stranger
• Github repos (will change)
– Server:
https://github.com/puppetlabs/razor-server
– Microkernel:
https://github.com/puppetlabs/razor-el-mk
• Mailing list:
http://groups.google.com/group/puppet-razor
• IRC: #puppet-razor (freenode)
• My email: lutter@puppetlabs.com
31
Notes de l'éditeur
About me: Puppet Labs since May
One of the first contributors to Puppet
Started Augeas
Apache Deltacloud, DMTF CIMI, Red Hat for a long time
Yes, this is fake data, and the survey never happened
Started by EMC/VMWare
Nick Weaver, Tom McSweeney
EMC World 2012
PuppetConf 2012
Problem: get bits onto hardware or virt machines
Existing solutions:
must know each system very well
track MAC address vs system characteristics outside of provisioning tool
do too much (or not enough)
Hardware discovery
microkernel + facter
Classify nodes with tags
Match with policy
Apply installer and broker
Node
References policy
Keeps facts (JSON)
IP address
Store userdata via API (JSON)
- small DB size
- 10's of kB per node
install iPXE on TFTP
download bootstrap.ipxe from server
Separate MK agent from OS repo
Build on EL
well-known hardware support
formal support offerings
currently ~ 130MB
Node discovery with MK and facter
Use ipxe to control boot
Written in Ruby
Flexible tag/rule-based policy match
Manage large number of nodes
- Module by Chris Hoge
- Known packaging issue with Openstack (dashboard/django14)
- Need working DNS !
- Controller runs keystone, horizon, glance, nova, mysql, rabbitmq
- Compute runs nova compute; optionally nova network, nova api, nova volume
Boot locally
Boot into MK
register
update facts
Power control (IPMI)
BIOS/firmware update
Reinstall OS
Unbind & run through policy table