53
Introduction to Chef SCALE Build a Cloud Day [email protected] www.opscode.com @mattray

SCALE 10x Build a Cloud Day

Embed Size (px)

DESCRIPTION

Matt Ray's Introduction to Chef talk from the 2012 Southern California Linux Expo's Build a Cloud Day.

Citation preview

Page 2: SCALE 10x Build a Cloud Day

• U has a cloud

• Now what?

http://www.flickr.com/photos/ian_munroe/4758240536/

Congratulations!!!

Page 3: SCALE 10x Build a Cloud Day
Page 4: SCALE 10x Build a Cloud Day

APIs are awesome!

• You can provision compute resources in seconds

• You can provision storage resources in seconds

• That’s cool.

http://www.flickr.com/photos/jdhancock/3634246981/

Page 5: SCALE 10x Build a Cloud Day

Chef can help with that

• knife ec2 server create

• knife rackspace server create

• knife terremark server create

• knife voxel server create

• knife gandi server create

• knife cloudstack server create

• knife kvm server create

• knife vsphere server create

• knife eucalyptus server create

• knife openstack server create

http://www.flickr.com/photos/kyz/3122499444/

Page 6: SCALE 10x Build a Cloud Day

But then what?

http://www.flickr.com/photos/doctorow/2698336843

Page 7: SCALE 10x Build a Cloud Day

You need to configure them

Page 8: SCALE 10x Build a Cloud Day

See Node

Application Server

Page 9: SCALE 10x Build a Cloud Day

See Nodes

Application Server

Application Database

Page 10: SCALE 10x Build a Cloud Day

See Nodes Grow

Application Server

Application Databases

Page 11: SCALE 10x Build a Cloud Day

Application Servers

Application Databases

See Nodes Grow

Page 12: SCALE 10x Build a Cloud Day

Application Servers

Application Databases

Load Balancer

See Nodes Grow

Page 13: SCALE 10x Build a Cloud Day

See Nodes Grow

Application Servers

Application Databases

Load Balancers

Page 14: SCALE 10x Build a Cloud Day

See Nodes Grow

Application Servers

Application Database Cache

Load Balancers

Application Databases

Page 15: SCALE 10x Build a Cloud Day

Tied together with Config

Application Servers

Application Database Cache

Load Balancers

Application Databases

Page 16: SCALE 10x Build a Cloud Day

Infrastructure is a Snowflake

Application Servers

Application Database Cache

Load Balancers

Floating IP?

Application Databases

Page 17: SCALE 10x Build a Cloud Day

Evolving Complexity

Load Balancers

Application Servers

NoSQL

Database Slaves

ApplicationCache

Database Cache

Database

Page 18: SCALE 10x Build a Cloud Day

Complexity Grows Quickly

DC1

DC3

DC2

Page 19: SCALE 10x Build a Cloud Day

http://www.flickr.com/photos/16339684@N00/2681435235/

And it Continues to Evolve

Page 20: SCALE 10x Build a Cloud Day

Golden Images are not the answer

• Gold is heavy

• Hard to transport

• Hard to mold

• Easy to lose configuration detail

http://www.flickr.com/photos/garysoup/2977173063/

Page 21: SCALE 10x Build a Cloud Day

Jboss App

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite

Typical Boring Infrastructure

Page 22: SCALE 10x Build a Cloud Day

• Move SSH off port 22

• Lets put it on 2022

Jboss App

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite

New Compliance Mandate

Page 23: SCALE 10x Build a Cloud Day

Jboss App

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite 1 2

3

4

5

6

• edit /etc/ssh/sshd_config

6 Golden Image Updates

Page 24: SCALE 10x Build a Cloud Day

• Delete, launch

• Repeat

• Typically manually

8

Jboss App

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite 1 2

3 4 5 6 7

9

10 11

12

12 Instance Replacements

Page 25: SCALE 10x Build a Cloud Day

5

Jboss App

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite 1 2

4 5 6 7

8 9

10 11

12

3

• Don't break anything!

In a Maintenance Window

Page 26: SCALE 10x Build a Cloud Day

Jboss App

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite

• Invalid Configs

• Bob just got fired :(

With Different IP Addresses?

Page 27: SCALE 10x Build a Cloud Day

http://www.flickr.com/photos/francoforeshock/5716969942/

Configuration Desperation

Page 28: SCALE 10x Build a Cloud Day

Configuration Management and Automated Systems Integration

is the Answer

http://www.flickr.com/photos/philliecasablanca/3354734116/

Page 29: SCALE 10x Build a Cloud Day

Chef Solves This Problem

• But you already guessed that, didn’t you?

Page 30: SCALE 10x Build a Cloud Day

Collections of Resources

• Networking

• Files

• Directories

• Symlinks

• Mounts

• Routes

• Users

• Groups

• Tasks

• Packages

• Software

• Services

• Configurations

• Other Stuffhttp://www.flickr.com/photos/stevekeys/3123167585/

Page 31: SCALE 10x Build a Cloud Day

http://www.flickr.com/photos/glowjangles/4081048126/

Acting in Concert

Page 32: SCALE 10x Build a Cloud Day

http://www.flickr.com/photos/28309157@N08/3743455858/

To Provide a Service

Page 33: SCALE 10x Build a Cloud Day

Chef is Infrastructure as Code

http://www.flickr.com/photos/louisb/4555295187/

• Programmatically provision and configure

• Treat like any other code base

• Reconstruct business from code repository, data backup, and bare metal resources.

Page 34: SCALE 10x Build a Cloud Day

Declarative Interface to Resources

• Define policy

• Say what, not how

• Pull not Push

http://www.flickr.com/photos/bixentro/2591838509/

Page 35: SCALE 10x Build a Cloud Day

That looks like this

extra_packages = case node['platform'] when "ubuntu","debian" %w{ ruby1.8 ruby1.8-dev rdoc1.8 ri1.8 libopenssl-ruby } endextra_packages.each do |pkg| package pkg do action :install endend

Page 36: SCALE 10x Build a Cloud Day

Or thissearch(:users, '*:*') do |u| user u['id'] do uid u['uid'] shell u['shell'] home "/home/#{u['id']}" end directory "#{home_dir}/.ssh" do

owner u['id'] group u['gid'] mode "0700" end template "#{home_dir}/.ssh/authorized_keys" do source "authorized_keys.erb" owner u['id'] group u['id'] mode "0600" variables :ssh_keys => u['ssh_keys']

endend

Page 37: SCALE 10x Build a Cloud Day

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/

Page 38: SCALE 10x Build a Cloud Day

• Chef-Client generates configurations directly on nodes

• Reduce management complexity through abstraction

• Store the configuration of your programs in version control

http://www.flickr.com/photos/ssoosay/5126146763/

Nodes

Page 39: SCALE 10x Build a Cloud Day

Upload your infrastructureknife cookbook upload apt

knife cookbook upload chef-client

knife cookbook upload java

knife cookbook upload jpackage

knife cookbook upload ntp

knife cookbook upload sudo

knife cookbook upload tomcat

knife cookbook upload users

knife cookbook upload sample

knife role from file base-cloud.rb

knife role from file tc.rb

knife role from file sample.rb

knife data bag create users

knife data bag from file users mray.json

Page 40: SCALE 10x Build a Cloud Day

Build it somewhere

#EC2knife ec2 server create -S mray -i ~/.ssh/mray.pem -x ubuntu -G default -I ami-a7a97dce -f m1.small -d omnibus -r 'role[base-cloud],role[tc],role[sample]'

#Rackspaceknife rackspace server create --image 110 --flavor 2 -i ~/.ssh/mray.pem -d omnibus -r 'role[base-cloud],role[tc],role[sample]'

#CloudStackknife cs server create -S "small instance" -T "CentOS 5.5(64-bit) no GUI (KVM)" -i ~/.ssh/mray.pem -d omnibus -r 'role[base-cloud],role[tc],role[sample]'

#Ubuntu Linuxknife bootstrap test.lab -r 'role[webserver]' -i ~/.ssh/mray.pem -x ubuntu --sudo -d omnibus -r 'role[base-cloud],role[tc],role[sample]'

Page 41: SCALE 10x Build a Cloud Day

http://www.flickr.com/photos/kathycsus/2686772625

Search

• IP addresses

• Hostnames

• FQDNs

• Search for nodes with Roles

• Find configuration data

Page 42: SCALE 10x Build a Cloud Day

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

Pass results into Templates

Page 43: SCALE 10x Build a Cloud Day

# 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 -%>

Pass results into Templates

Page 44: SCALE 10x Build a Cloud Day

Jboss App

Memcache

Postgres Slaves

Postgres Master

So when this

NagiosGraphite

Page 45: SCALE 10x Build a Cloud Day

Jboss App

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite

Becomes this

Page 46: SCALE 10x Build a Cloud Day

Jboss App

Memcache

Postgres Slaves

Postgres Master

NagiosGraphite

Updates can be automatic

Page 47: SCALE 10x Build a Cloud Day

NagiosGraphite

Count the resources

Jboss App

Memcache

Postgres Slaves

• Load balancer config

• Nagios host ping

• Nagios host ssh

• Nagios host HTTP

• Nagios host app health

• Graphite CPU

• Graphite Memory

• Graphite Disk

• Graphite SNMP

• Memcache firewall

• Postgres firewall

• Postgres authZ config

• 12+ resource changes for 1 node addition

Page 48: SCALE 10x Build a Cloud Day

http://www.flickr.com/photos/evelynishere/2798236471/

CLONING CANNOT COPE WITH THIS

• Chef can.

Page 49: SCALE 10x Build a Cloud Day

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/

Page 50: SCALE 10x Build a Cloud Day

And manage it simply

http://www.flickr.com/photos/helico/404640681/

• Automatically reconfigure everything

• Linux, Windows, Unixes, BSDs

• Load balancers

• Metrics collection systems

• Monitoring systems

• Cloud migrations become trivial

Page 51: SCALE 10x Build a Cloud Day

The Chef Community

• Apache License, Version 2.0

• 550+ Individual contributors

• 100+ Corporate contributors

• Dell, Rackspace,VMware, RightScale, Heroku, and many more

• Nearly 400 cookbooks

• http://community.opscode.com

Page 52: SCALE 10x Build a Cloud Day

Questions?

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

Questions?