chef...chef groups nodes into environments. you can have as many environments as you like. nodes...

41
Chef cd ~/scripts && find . -type f -name "*.sh" -exec rm -rf {} \; Wednesday, November 21, 12

Upload: others

Post on 13-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Chefcd ~/scripts && find . -type f -name "*.sh" -exec rm -rf {} \;

Wednesday, November 21, 12

Page 2: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

You’ve got a cloud. Now what ?

Wednesday, November 21, 12

Page 3: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Problems

Wednesday, November 21, 12

Page 4: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

What lots of people do now

Wednesday, November 21, 12

Page 5: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

ManualOften error proneSlowTime ConsumingProcess Heavy

Wednesday, November 21, 12

Page 6: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

I know, I write bash scripts

Wednesday, November 21, 12

Page 7: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

SSH for loopsTests, what tests ?

Wednesday, November 21, 12

Page 8: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

What if we could version control our servers and network, the

way we do with code?

Wednesday, November 21, 12

Page 9: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Infrastructure as CodeDesired stateTransformations to achieve itAs text filesIn version controlTestable and reproducible

Wednesday, November 21, 12

Page 10: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

a ruby-based system integration framework designed to bring the benefits of configuration management to your entire infrastructure

Chef is

Wednesday, November 21, 12

Page 11: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Huh ?

Wednesday, November 21, 12

Page 12: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

a Configuration management system

a System integration platform

an API for your entire infrastructure

Wednesday, November 21, 12

Page 13: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

1st releaseJan 15, 2009

Initial commitMar 05, 2008

Wednesday, November 21, 12

Page 14: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Cookbooks

Wednesday, November 21, 12

Page 15: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

.|-- README.md|-- attributes| `-- default.rb|-- metadata.rb|-- recipes| |-- default.rb| |-- server.rb| `-- source.rb`-- templates `-- default |-- sv-git-daemon-log-run.erb `-- sv-git-daemon-run.erb

4 directories, 11 files

Git cookbook

Wednesday, November 21, 12

Page 16: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

metadata.rb

Wednesday, November 21, 12

Page 17: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

recipes/default.rb

Wednesday, November 21, 12

Page 18: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

recipes/server.rb

Wednesday, November 21, 12

Page 19: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

MongoDB cookbook.|-- README.md|-- attributes| `-- default.rb|-- definitions| `-- mongodb.rb|-- files| `-- default| `-- mongodb.init|-- libraries| `-- mongodb.rb|-- metadata.json|-- metadata.rb|-- recipes| |-- 10gen_repo.rb| |-- configserver.rb| |-- default.rb| |-- mongos.rb| |-- replicaset.rb| `-- shard.rb`-- templates `-- default `-- mongodb.default.erb

8 directories, 14 files

Wednesday, November 21, 12

Page 20: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

templates/default/mongodb.default.erb

Wednesday, November 21, 12

Page 21: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

A lot of layers in Chef

have attributes :

Environments, Nodes, Roles and Cookbooks.

Wednesday, November 21, 12

Page 22: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Chef groups Nodes

into Environments. You can have as many environments as you like.

Nodes have one or more Roles applied to them.

A Role is comprised of one or more

Cookbooks.Wednesday, November 21, 12

Page 23: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Cookbooks are comprised of one of more

Recipes, Templates,Files and more.

Wednesday, November 21, 12

Page 24: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Tadaaaaa!

Wednesday, November 21, 12

Page 25: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

How do cookbooks get applied to servers?

Wednesday, November 21, 12

Page 26: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Runlists executes on nodes

Wednesday, November 21, 12

Page 27: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

In plain words

1. Clients talks to a Chef server, and asks for their configuration.

2. Clients run ruby code on themselves, to converge to the aimed configuration

Wednesday, November 21, 12

Page 28: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

source: http://wiki.opscode.com/display/chef/Architecture+Introduction

Wednesday, November 21, 12

Page 29: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Cool stuffs

Wednesday, November 21, 12

Page 30: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

{ "id": "mehlah", "name": "Mehdi Lahmam B.", "uid": "2001", "group": "www-data", "home": "/home/mehlah", "roles": [ "unix", "sudo" ], "ssh_keys": [ "akeystring" ] }

Data bags

Wednesday, November 21, 12

Page 31: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Search

search(:node, "*:*") {|n| nodes << n }

through Data Bags, Roles, Nodes and more...

knife search role "name:production*"knife search node 'platform:ubuntu'knife search admins 'id:christophe'

search(:node, 'dmi_system_manufacturer:Dell*').each do |node|  puts node[:dmi][:system][:serial_number] + "\t" + node[:fqdn]end

Examples

XJS1NF1 www1.example.orgXJS1NF2 www2.example.orgXJS1NF3 www3.example.org

Wednesday, November 21, 12

Page 32: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

$ gem install knife-ec2Fetching: excon-0.6.6.gem (100%)…Successfully installed knife-ec2-0.5.106 gems installed$ knife ec2 server create 'role[webserver]' -I ami-7000f019 -f m1.smallInstance ID: i-9e7ef1feFlavor: m1.smallImage: ami-7000f019Region: us-east-1Availability Zone: us-east-1cSecurity Groups: defaultSSH Key: relevance_awsWaiting for server...

Knife

Wednesday, November 21, 12

Page 33: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Not so cool stuffs

Wednesday, November 21, 12

Page 34: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Wednesday, November 21, 12

Page 35: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Local development and VagrantBuilds virtual machines from a text file and some Chef cookbooks

Wednesday, November 21, 12

Page 36: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Vagrant::Config.run do |config|  config.vm.box = "precise32"  config.vm.network :hostonly, "33.33.33.10"    config.vm.provision :chef_solo do |chef|    chef.cookbooks_path = ["cookbooks","cookbooks-src"]         chef.add_recipe "build-essential"    chef.add_recipe "apt"    chef.add_recipe "ruby_build"    chef.add_recipe "rbenv::system"    chef.add_recipe "rbenv::vagrant"    chef.add_recipe "nginx"    chef.add_recipe "unicorn"    chef.add_recipe "rails-lastmile"        chef.json = {      'rvm' => {        'default_ruby' => 'ruby-1.9.3-p194',        'gem_package' => {          'rvm_string' => 'ruby-1.9.3-p194'        }      }    }  endend

Vagrantfile

Wednesday, November 21, 12

Page 37: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Benefits

Version control dev environmentShare configs across teamRecreate project or client setupKeep host environment clean

Wednesday, November 21, 12

Page 38: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

1D Touch

Wednesday, November 21, 12

Page 39: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

1D Touch + Rackspace Cloud Servers

Wednesday, November 21, 12

Page 40: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Thanks! @mehlah

Wednesday, November 21, 12

Page 41: Chef...Chef groups Nodes into Environments. You can have as many environments as you like. Nodes have one or more Roles applied to them. A Role is comprised of one or more Cookbooks

Typeface: Arvo

Notes on design

Colors: #FF9900 #3299BB#424242 #E9E9E9

Wednesday, November 21, 12