Chef is an open source configuration management and service integration automation tool that has been integral to a number of large successful OpenStack deployments. This talk will provide a brief introduction to Chef and why it frequently the configuration tool of choice for large deployments and discuss the use of Chef within the OpenStack ecosystem (development, testing, deploying and managing the installation). Chef also provides the ability to manage the instances running on top of Nova through the knife-openstack plugin.
15. And it Continues to Evolve
http://www.flickr.com/photos/16339684@N00/2681435235/
16. Chef is Infrastructure as Code
• Programmatically
provision and configure
• Treat like any other code
base
• Reconstruct business from
code repository, data
backup, and bare metal
resources.
http://www.flickr.com/photos/louisb/4555295187/
17. Nodes
• Chef-Client generates
configurations directly
on nodes from their
run list
• Reduce management
complexity through
abstraction
• Store the configuration
of your programs in
version control
http://www.flickr.com/photos/ssoosay/5126146763/
19. Declarative Interface to Resources
• Define policy
• Say what, not how
• Pull not Push
http://www.flickr.com/photos/bixentro/2591838509/
20. Ruby!
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
end
end
21. Recipes and Cookbooks
• Recipes are collections of
Resources
• Cookbooks contain
recipes, templates, files,
custom resources, etc
• Code re-use and
modularity
• Hundreds already on
Community.opscode.com
http://www.flickr.com/photos/shutterhacks/4474421855/
22. Search
• Search for nodes
with Roles
• Find configuration
data
• IP addresses
• Hostnames
• FQDNs
http://www.flickr.com/photos/kathycsus/2686772625
23. Pass Results to Templates
pool_members = search("node","role:webserver”)
template "/etc/haproxy/haproxy.cfg" do
source "haproxy-app_lb.cfg.erb"
owner "root"
group "root"
mode 0644
variables :pool_members => pool_members.uniq
notifies :restart, "service[haproxy]"
end
24. Pass Results to Templates
# Set up application listeners here.
listen application 0.0.0.0:80
balance roundrobin
<% @pool_members.each do |member| -%>
server <%= member[:hostname] %> <%= member[:ipaddress] %>:> weight 1 maxconn 1 check
<% end -%>
<% if node["haproxy"]["enable_admin"] -%>
listen admin 0.0.0.0:22002
mode http
stats uri /
<% end -%>
29. Build anything
• Simple internal applications
• Complex external applications
• Workstations
• Hadoop clusters
• IaaS infrastructure
• PaaS infrastructure
• SaaS applications
• Storage systems
• You name it
http://www.flickr.com/photos/hyku/245010680/
30. And manage it simply
• Automatically
reconfigure
everything
• Linux, Windows,
Unixes, BSDs
• Load balancers
• Metrics collection
systems
• Monitoring systems
• Cloud migrations
become trivial
http://www.flickr.com/photos/helico/404640681/
31. The Chef Community
• Apache License, Version 2.0
• 675+ Individual contributors
• 125+ Corporate contributors
• Dell, Rackspace, VMware, DreamHost,
Joyent, Heroku, RightScale, Deutsche
Telekom and many more
• 450+ cookbooks
• http://community.opscode.com
33. Opscode
• Bexar/Cactus, now deprecated
• original source for many other efforts
• Crowbar
• Mercado Libre
• HP
• Apache 2 license
• http://wiki.opscode.com/display/chef/
Deploying+OpenStack+with+Chef
• github.com/mattray/openstack-cookbooks
36. Crowbar
• Datacenter installer from Dell
• Extension of the Chef server
• "Barclamps" contain cookbooks + more
• Dell released under the Apache 2 license
• Dell, enStratus, Opscode & many others
• Mailing list and Skype
• github.com/dellcloudedge/crowbar
37. Deploying OpenStack
• Chef ties it all together automatically
• Scaling changes how we deploy
• Interchangeable components
• Configurations shared, supported &
documented
• Licensing makes it available to everyone
41. knife openstack image list
$ knife openstack image list
ID Name
13 natty-server-cloudimg-amd64
12 natty-server-cloudimg-amd64-kernel
15 oneiric-server-cloudimg-amd64
14 oneiric-server-cloudimg-amd64-kernel
42. knife openstack server create
knife openstack server create --node-name ko1 --flavor 1 --image 13 -S trystack
43.
44. $ ssh -i ~/.ssh/trystack.pem ubuntu@8.21.28.24
The authenticity of host '8.21.28.24 (8.21.28.24)' can't be established.
RSA key fingerprint is 0c:d8:3e:34:d1:de:c4:ee:5f:bc:b5:89:11:0d:73:e0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '8.21.28.24' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-13-virtual x86_64)
* Documentation: https://help.ubuntu.com/
System information as of Thu Feb 16 23:43:29 UTC 2012
System load: 0.08 Processes: 63
Usage of /: 40.8% of 1.35GB Users logged in: 0
Memory usage: 6% IP address for eth0: 8.21.28.24
Swap usage: 0%
---------------------------------------------------------------------
<snip>
Get cloud support with Ubuntu Advantage Cloud Guest
http://www.ubuntu.com/business/services/cloud
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
ubuntu@ko1:~$
45. Chef for Infrastructure Portability
• knife ec2
• knife rackspace
• knife hp
• knife openstack
• ... and many others
47. knife-openstack Roadmap
• http://wiki.opscode.com/display/chef/
OpenStack+Bootstrap+Fast+Start+Guide
• Merges & publish on rubygems.org
• Testing with Essex
• tickets.opscode.com/browse/
KNIFE_OPENSTACK
48. Chef Roadmap
• Chef 0.10.10
• Full Stack installer
• Linux, BSDs, OSX, Solaris (Illumos),
Windows
• Chef 11
• Reporting
• Dry Run
49. OpenStack Cookbooks Roadmap
• Additional Hypervisors
• More Databases
• Operations Support
• HA Configuration
• Additional Operating Systems
• Folsom (Quantum, Melange, etc.)
50. Opscode's OpenStack Roadmap
• Collaborate with the Community
• Reference cookbooks for Essex
• OpenStack Quick Start tutorial
• Refresh Deploying OpenStack with Chef
• Knife OpenStack enhancements
51. Thanks!
Matt Ray
matt@opscode.com
IRC/Twitter/LP/GitHub: mattray
www.opscode.com