Velocity 2011 Chef OpenStack Workshop
-
Upload
chef-software-inc -
Category
Technology
-
view
3.914 -
download
2
description
Transcript of Velocity 2011 Chef OpenStack Workshop
Deploying OpenStack with Opscode Chef
Who am I?
• Matt Ray
• Senior Technical Evangelist
• Opscode, Inc.
• Twitter/GitHub/Launchpad/IRC: mattray
Deploying OpenStack is not simple.
Chef makes it easier.
Infrastructure as Code
Enable the reconstruction of the business from
nothing but a source code repository, an application
data backup, and bare metal resources.
Configuration Management
System Integration
http://www.flickr.com/photos/opalsson/3773629074/
The Chef Framework
• Reasonability
• Flexibility
• Library & Primitives
• TIMTOWTDI
The Chef Tool(s)
• ohai
• chef-client
• knife
• shef
The Chef API
• Client/Server
• RESTful API w/ JSON
• Search Service
• Derivative Services
The Chef Community
• Apache License, Version 2.0
• 360+ Individual contributors
• 70+ Corporate contributors
• Dell, Rackspace,VMware, RightScale, Heroku, and many more
• 240+ cookbooks
• http://community.opscode.com
Resourcesopenstack-cookbooks
github.com/mattray/openstack-cookbooks
• Chef repository
• cookbooks
• roles
• data bags
• stable branches
• issues
Chef Nodes
• Each system you manage is called a node.
• The chef-client runs on nodes.
• The ohai discovery agent runs on nodes.
• Nodes have a run list.
• Searchable
Chef Resources
• Have a type.
• Have a name.
• Have parameters.
• Take action to put the resource in the declared state.
• Can send notifications to other resources.
• Take action through Providers
package "haproxy" do action :installend
template "/etc/haproxy/haproxy.cfg" do source "haproxy.cfg.erb" owner "root" group "root" mode 0644 notifies :restart, "service[haproxy]"end
service "haproxy" do supports :restart => true action [:enable, :start]end
extra_packages = case node[:platform] when "ubuntu","debian" %w{ ruby1.8 ruby1.8-dev rdoc1.8 ri1.8 libopenssl-ruby } end
extra_packages.each do |pkg| package pkg do action :install endend
Chef Recipes
• Ordered list of Resources
• Idempotent execution
• Ruby
Chef Cookbooks
• Cookbooks are packages for Recipes
• Recipes
• Assets (files/templates)
• Attributes
• Metadata
• Distributable and managed as Source
• community.opscode.com
OpenStack Cookbooks
• Included
• glance
• nova
• swift
• Installed
• apache2
• apt
• mysql
• openssl
• rabbitmq
Chef Roles
• Roles describe the node.
• Roles have run lists.
• Roles have attributes.
• Roles may contain other roles.
• Searchable.
• Webserver, database, Hadoop-worker, etc.
OpenStack Roles
• nova-single-machine
• nova-db
• nova-rabbitmq-server
• glance-single-machine
• nova-multi-controller
• nova-multi-compute
Chef Data Bags
• Data bags store arbitrary data
• JSON
• Searchable
OpenStack Data Bags
knife data bag create openstack
knife data bag from file openstack defaults.jsonknife data bag from file openstack glance.jsonknife data bag from file openstack images.json
knife data bag show openstack imagesid: imagesimages: http://uec-images.ubuntu.com/lucid/current/ubuntu-10.04-server-uec-amd64.tar.gz: arch: x86_64 distro: Ubuntu image: lucid-server-uec-amd64.img kernel: lucid-server-uec-amd64-vmlinuz-virtual version: 10.04
Deploying OpenStack
• Scaling changes how we deploy!
• Single machine works
• Controller + N Computes work(ed)
• Nova and/or Swift installations
• Configurations will be supported, shared & documented
Spiceweasel
• yaml/json for describing infrastructure
• generates knife commands
• shareable "best practices"
• infrastructure.yml included
• bit.ly/spcwsl
Testing OpenStack
• bare-metal to OpenStack
• ~15 minutes
• pxe_dust cookbook
• 2 networks
• admin
• public
knife openstack
knife openstack
$ gem install knife-openstack
$ knife openstack** OPENSTACK COMMANDS **knife openstack server list (options)knife openstack flavor list (options)knife openstack server create (options)knife openstack server delete SERVER [SERVER] (options)knife openstack image list (options)
knife.rb
knife[:openstack_access_key_id] = "MeMpLexdnjmXeXGMx:admin"knife[:openstack_secret_access_key] = "nFjXAKl5G6VaXE3bVuwi"knife[:openstack_api_endpoint] = "http://192.168.11.9:8773/services/Cloud"
knife openstack server create -S mykey -x ubuntu -I ami-4b0ff834 -f m1.tiny -r 'role[webserver]'
How did we get here?
git clone git://github.com/mattray/openstack-cookbooks.git
Origins
• Forked from Anso Labs
• Bootstrapped originally by Opscode
• Chef Solo/Vagrant installs for Developers
• http://github.com/ansolabs/openstack-cookbooks
Crowbar
• OpenStack installer from Dell
• Dell is releasing this under the Apache 2 license
• Extension of the Chef server
• Developed by Dell, Rackspace & Opscode
• http://github.com/dellcloudedge
What's Next?
http://www.flickr.com/photos/felixmorgner/4347750467/
Nova Roadmap
• Improve Glance integration
• Network Types
• Flat, FlatDHCP, VLANs
• Multiple Hypervisors
• Xen, LXC, Hyper-V
• Databases
• PostgreSQL, Drizzle
Swift Roadmap
• Multiple Implementations Available
• Dell• http://github.com/dellcloudedge/openstack-swift
• Voxel• http://www.voxel.net/blog/2011/05/openstack-swift-chef-
and-spiceweasel-part-1-0
• http://github.com/voxeldotnet/openstack-swift-chef
Dashboard
OpenStack Roadmap
• Diablo release
• RHEL 6 & Fedora
• Windows
Get Involved!
• http://github.com/mattray/openstack-cookbooks/tree/cactus
• http://wiki.opscode.com/display/chef/Deploying+OpenStack+with+Chef
• irc.freenode.net #chef #openstack
• Twitter/GitHub/Launchpad/IRC:mattray
Questions?
http://www.flickr.com/photos/mrchippy/443960682/
Questions?
Thanks!
http://www.opscode.com