Velocity 2011 Chef OpenStack Workshop

Post on 10-May-2015

3,914 views 2 download

Tags:

description

The Deploying OpenStack with Chef section of the OpenStack Workshop from Velocity 2011

transcript

Deploying OpenStack with Opscode Chef

matt@opscode.comwww.opscode.com

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

Dashboard

OpenStack Roadmap

• Diablo release

• RHEL 6 & Fedora

• Windows

Questions?

http://www.flickr.com/photos/mrchippy/443960682/

Questions?

Thanks!

http://www.opscode.com