How to be a Chef (Developer Edition)

50
How to be a Chef (Developer Edition) Rodrigo Ayala Developer sábado, 1 de junio de 13

description

Talk about Opscode Chef, a tool that helps to configurate services for servers.

Transcript of How to be a Chef (Developer Edition)

Page 1: How to be a Chef (Developer Edition)

How to be a Chef(Developer Edition)

Rodrigo AyalaDeveloper

sábado, 1 de junio de 13

Page 2: How to be a Chef (Developer Edition)

@RodrigoAyala

sábado, 1 de junio de 13

Page 3: How to be a Chef (Developer Edition)

(Web) Apps are a bunch of software interconnected in a nice way

sábado, 1 de junio de 13

Page 4: How to be a Chef (Developer Edition)

But software lives on servers

sábado, 1 de junio de 13

Page 5: How to be a Chef (Developer Edition)

And we can’t to play dumb with that

sábado, 1 de junio de 13

Page 6: How to be a Chef (Developer Edition)

tions?

sábado, 1 de junio de 13

Page 7: How to be a Chef (Developer Edition)

Cloud, or local server

sábado, 1 de junio de 13

Page 8: How to be a Chef (Developer Edition)

Local server

sábado, 1 de junio de 13

Page 9: How to be a Chef (Developer Edition)

Local server

Pros:

sábado, 1 de junio de 13

Page 10: How to be a Chef (Developer Edition)

Local server

Pros:✓ You know where your data lives

sábado, 1 de junio de 13

Page 11: How to be a Chef (Developer Edition)

Local server

Pros:✓ You know where your data lives✓ The equipment is yours and you can personalize as you want

sábado, 1 de junio de 13

Page 12: How to be a Chef (Developer Edition)

Local server

Pros:✓ You know where your data lives✓ The equipment is yours and you can personalize as you want

Cons:

sábado, 1 de junio de 13

Page 13: How to be a Chef (Developer Edition)

Local server

Pros:✓ You know where your data lives✓ The equipment is yours and you can personalize as you want

Cons:✓ You are responsible to give power and a good Tº to the server

sábado, 1 de junio de 13

Page 14: How to be a Chef (Developer Edition)

Local server

Pros:✓ You know where your data lives✓ The equipment is yours and you can personalize as you want

Cons:✓ You are responsible to give power and a good Tº to the server✓ The environment should be able to support catastrophes. (TIER)

sábado, 1 de junio de 13

Page 15: How to be a Chef (Developer Edition)

Local server

Pros:✓ You know where your data lives✓ The equipment is yours and you can personalize as you want

Cons:✓ You are responsible to give power and a good Tº to the server✓ The environment should be able to support catastrophes. (TIER)✓It needs a lot of configuration (and that needs a lot of time)

sábado, 1 de junio de 13

Page 16: How to be a Chef (Developer Edition)

Cloud

sábado, 1 de junio de 13

Page 17: How to be a Chef (Developer Edition)

Cloud

Pros:

sábado, 1 de junio de 13

Page 18: How to be a Chef (Developer Edition)

Cloud

Pros:✓ You don’t need an huge initial investment to buy (expensive) servers

sábado, 1 de junio de 13

Page 19: How to be a Chef (Developer Edition)

Cloud

Pros:✓ You don’t need an huge initial investment to buy (expensive) servers✓ You can dynamically create an IT architecture

sábado, 1 de junio de 13

Page 20: How to be a Chef (Developer Edition)

Cloud

Pros:✓ You don’t need an huge initial investment to buy (expensive) servers✓ You can dynamically create an IT architecture

Cons:

sábado, 1 de junio de 13

Page 21: How to be a Chef (Developer Edition)

Cloud

Pros:✓ You don’t need an huge initial investment to buy (expensive) servers✓ You can dynamically create an IT architecture

Cons:✓ If for any reason the cloud service is down, you can’t do anything but wait

sábado, 1 de junio de 13

Page 22: How to be a Chef (Developer Edition)

Cloud

Pros:✓ You don’t need an huge initial investment to buy (expensive) servers✓ You can dynamically create an IT architecture

Cons:✓ If for any reason the cloud service is down, you can’t do anything but wait✓It needs a lot of configuration (and that needs a lot of time)

sábado, 1 de junio de 13

Page 23: How to be a Chef (Developer Edition)

Cloud

IaaS PaaS

sábado, 1 de junio de 13

Page 24: How to be a Chef (Developer Edition)

Cloud

IaaS PaaS

Infrastructure as a Service

✓Flexible✓Cheap

sábado, 1 de junio de 13

Page 25: How to be a Chef (Developer Edition)

Cloud

IaaS PaaS

Platform as a Service

✓First deploy in just minutes✓You don’t have to worry about software updates

sábado, 1 de junio de 13

Page 26: How to be a Chef (Developer Edition)

Cloud

IaaS PaaS

¿ ?

sábado, 1 de junio de 13

Page 27: How to be a Chef (Developer Edition)

sábado, 1 de junio de 13

Page 28: How to be a Chef (Developer Edition)

Configuration Management toolWritten in RubyOpen Source

sábado, 1 de junio de 13

Page 29: How to be a Chef (Developer Edition)

88.3K lines of code7.497 commits

Since March 2008https://github.com/opscode/chef

* Metrics by http://www.ohloh.net/p/opscode-chef

sábado, 1 de junio de 13

Page 30: How to be a Chef (Developer Edition)

Let’s see how it works

sábado, 1 de junio de 13

Page 31: How to be a Chef (Developer Edition)

Chef

sábado, 1 de junio de 13

Page 32: How to be a Chef (Developer Edition)

ChefChef Server

Chef Solo

sábado, 1 de junio de 13

Page 33: How to be a Chef (Developer Edition)

Chef Server

Chef Client

Chef Client

Chef Client

Chef Server

(Repository)

sábado, 1 de junio de 13

Page 34: How to be a Chef (Developer Edition)

Chef Solo

Forever Alone version

sábado, 1 de junio de 13

Page 35: How to be a Chef (Developer Edition)

Chef Solo

Chef Solo Chef Solo Bootstraped

sábado, 1 de junio de 13

Page 36: How to be a Chef (Developer Edition)

Let’s see how it works

sábado, 1 de junio de 13

Page 37: How to be a Chef (Developer Edition)

Cookbookhttp://community.opscode.com/cookbooks

https://github.com/opscode-cookbooks

sábado, 1 de junio de 13

Page 38: How to be a Chef (Developer Edition)

★ Java★ postgreSQL★ MySQL★ SELinux★ RVM★ etc

Cookbook

sábado, 1 de junio de 13

Page 39: How to be a Chef (Developer Edition)

Recipes

sábado, 1 de junio de 13

Page 40: How to be a Chef (Developer Edition)

Recipes

Are included on cookbooks

Written in Ruby

There are functions available as DSL

You can use ERB templates with Recipes

sábado, 1 de junio de 13

Page 41: How to be a Chef (Developer Edition)

Resources

Used on recipes

Define actions that can be taken

There are functions available as DSL

Service, yum_package, execute or directory are a few examples of this

http://docs.opscode.com/chef/resources.html

sábado, 1 de junio de 13

Page 42: How to be a Chef (Developer Edition)

template '/etc/sudoers' do source 'sudoers.erb' mode '0440' owner 'root' group platform?('freebsd') ? 'wheel' : 'root' variables( :sudoers_groups => node['authorization']['sudo']['groups'], :sudoers_users => node['authorization']['sudo']['users'], :passwordless => node['authorization']['sudo']['passwordless'], :include_sudoers_d => node['authorization']['sudo']['include_sudoers_d'], :agent_forwarding => node['authorization']['sudo']['agent_forwarding'], :sudoers_defaults => node['authorization']['sudo']['sudoers_defaults'] ) not_if { node[:some_value]}end

Recipe example

sábado, 1 de junio de 13

Page 43: How to be a Chef (Developer Edition)

Run list

sábado, 1 de junio de 13

Page 44: How to be a Chef (Developer Edition)

{ "run_list":[ "recipe[user]", "recipe[sudo]", "recipe[main::user]", "recipe[yum::epel]", "recipe[nginx]", "recipe[redis::server]", "recipe[build-essential]", "recipe[rvm::user]", "recipe[main]", "recipe[nginx_conf]", "recipe[main::nginx]", "recipe[main::dirs]" ] ],

sábado, 1 de junio de 13

Page 45: How to be a Chef (Developer Edition)

Let’s cook!

sábado, 1 de junio de 13

Page 46: How to be a Chef (Developer Edition)

How to start

$ gem install knife-solo$ gem install chef-solo

$ gem install chef

sábado, 1 de junio de 13

Page 47: How to be a Chef (Developer Edition)

How to start

$ knife solo bootstrap user@ipnumber nodes/ip.json -i pemfile.pem

sábado, 1 de junio de 13

Page 48: How to be a Chef (Developer Edition)

https://github.com/opscode/chef-repo

Empty cookbook

sábado, 1 de junio de 13

Page 49: How to be a Chef (Developer Edition)

“Bundler” for Chef

https://github.com/applicationsonline/librarian-chef

sábado, 1 de junio de 13

Page 50: How to be a Chef (Developer Edition)

Gracias!

sábado, 1 de junio de 13