How to be a Chef
(Developer Edition)
Rodrigo Ayala
Developer
sábado, 1 de junio de 13
@RodrigoAyala
sábado, 1 de junio de 13
(Web) Apps are a bunch of software
interconnected in a nice way
sábado, 1 de junio de 13
But software lives
on servers
sábado, 1 de junio de 13
And we can’t to play
dumb with that
sábado, 1 de junio de 13
tions?
sábado, 1 de junio de 13
Cloud, or local server
sábado, 1 de junio de 13
Local server
sábado, 1 de junio de 13
Local server
Pros:
sábado, 1 de junio de 13
Local server
Pros:
✓You know where your data lives
sábado, 1 de junio de 13
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
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
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
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
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
Cloud
sábado, 1 de junio de 13
Cloud
Pros:
sábado, 1 de junio de 13
Cloud
Pros:
✓You don’t need an huge initial investment to
buy (expensive) servers
sábado, 1 de junio de 13
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
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
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
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
Cloud
IaaS PaaS
sábado, 1 de junio de 13
Cloud
IaaS PaaS
Infrastructure as a Service
✓Flexible
✓Cheap
sábado, 1 de junio de 13
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
Cloud
IaaS PaaS
¿ ?
sábado, 1 de junio de 13
sábado, 1 de junio de 13
Configuration Management tool
Written in Ruby
Open Source
sábado, 1 de junio de 13
88.3K lines of code
7.497 commits
Since March 2008
https://github.com/opscode/chef
* Metrics by http://www.ohloh.net/p/opscode-chef
sábado, 1 de junio de 13
Let’s see how it works
sábado, 1 de junio de 13
Chef
sábado, 1 de junio de 13
Chef
Chef Server
Chef Solo
sábado, 1 de junio de 13
Chef Server
Chef Client
Chef Client
Chef Client
Chef Server
(Repository)
sábado, 1 de junio de 13
Chef Solo
Forever Alone version
sábado, 1 de junio de 13
Chef Solo
Chef Solo Chef Solo Bootstraped
sábado, 1 de junio de 13
Let’s see how it works
sábado, 1 de junio de 13
Cookbookhttp://community.opscode.com/cookbooks
https://github.com/opscode-cookbooks
sábado, 1 de junio de 13
★ Java
★ postgreSQL
★ MySQL
★ SELinux
★ RVM
★ etc
Cookbook
sábado, 1 de junio de 13
Recipes
sábado, 1 de junio de 13
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
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
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
Run list
sábado, 1 de junio de 13
{
"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
Let’s cook!
sábado, 1 de junio de 13
How to start
$ gem install knife-solo
$ gem install chef-solo
$ gem install chef
sábado, 1 de junio de 13
How to start
$ knife solo bootstrap user@ipnumber nodes/ip.json -i
pemfile.pem
sábado, 1 de junio de 13
https://github.com/opscode/chef-repo
Empty cookbook
sábado, 1 de junio de 13
“Bundler” for Chef
https://github.com/applicationsonline/librarian-chef
sábado, 1 de junio de 13
Gracias!
sábado, 1 de junio de 13

How to be a Chef (Developer Edition)