introduction to chef framework

Post on 21-May-2015

2.541 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Presentation given at 3 December 2010 at SRUG meeting http://srug.pl

TRANSCRIPT

Introduction to "Chef" framework

Silesian Ruby Users GroupWojciech Wn¦trzak

December 3, 2010

What Is Chef?

Open Source (Apache License v. 2.0)

Framework

Ruby

Infrastructure con�guration management tool

Chef Is Young

Released on January 15th, 2009

Why To Use Chef?

Only one administration guy in company?

Forces order in system

Existing solutions for your problems

Best practices

How To Use Chef?

chef-client + chef-server

chef-client + Opscode Platform

chef-solo

Chef Server

Ruby gem (chef-server)

Stores cookbooks

Stores information about nodes

Accessbile by REST API

Chef Server Elements

CouchDB � stores node informations

SOLR � data indexing

RabbitMQ � helps in indexing

Merb � API and web user interface

That is lot of stu�!

Chef Server Elements

CouchDB � stores node informations

SOLR � data indexing

RabbitMQ � helps in indexing

Merb � API and web user interface

That is lot of stu�!

Opscode Platform

Free plan (upto 5 nodes)

Con�guration step by step

Organizations and users managment

Chef Client

Ruby gem (chef)

Runs on machine that we want to con�gure

Communicates with chef server

Authenticates using RSA keys

Server � Clients

Chef Solo

Part of chef gem

Standalone run (without connecting to server)

Uses cookbooks from local tarballs

Simple Work�ow

Write cookbook with recipe

Upload it to chef server

De�ne run list by:

� editing node on chef server� passing JSON �le to chef-client

Run chef-client on desired machine

Cookbooks

�Cookbooks for Chef are like RubyGems for

Ruby�1

1I couldn't �nd author

Cookbook Skeleton

Example Attributes File

set[:postgresql][:version] = "8.4"

set[:postgresql][:dir] =

"/etc/postgresql/#{node[:postgresql][:version]}/main"

PostgreSQL Server Recipe

include_recipe "postgresql::client"

package "postgresql-#{node[:postgresql][:version]}" do

action :install

end

template "#{node[:postgresql][:dir]}/postgresql.conf" do

source "postgresql.conf.erb"

owner "postgres"

group "postgres"

mode "0600"

end

service "postgresql-#{node[:postgresql][:version]}" do

action :start

end

Recipe Features

include_recipe "postgresql::client"

package "postgresql-#{node[:postgresql][:version]}"

service "postgresql" do

service_name "postgresql-#{node[:postgresql][:version]}"

supports :restart => true, :status => true

action :nothing

end

template "#{node[:postgresql][:dir]}/postgresql.conf" do

source "postgresql.conf.erb"

owner "postgres"

group "postgres"

mode "0600"

notifies :restart, "service[postgresql]"

end

Package Providers

Apt

Yum

MacPorts

Many more

Package Providers

Apt

Yum

MacPorts

Many more

Supported Systems

Debian

Gentoo

FreeBSD

MacOSX

Solaris

Windows

And more

Supported Systems

Debian

Gentoo

FreeBSD

MacOSX

Solaris

Windows

And more

Supported Systems

Debian

Gentoo

FreeBSD

MacOSX

Solaris

Windows

And more

Resources2

package

template

�le

user

execute

script (bash, ruby, perl, python, csh)

http_request

deploy

Many more

2http://wiki.opscode.com/display/chef/Resources

Resources2

package

template

�le

user

execute

script (bash, ruby, perl, python, csh)

http_request

deploy

Many more

2http://wiki.opscode.com/display/chef/Resources

Additional Tools - Ohai

Released as a gem � ohai

Collects system con�guration/information

Returns JSON

Additional Tools - Knife

Part of chef gem

Console tool for chef server managment

Tips

If using RVM, use rvmsudo for chef-client

Take a look at chef bootstrap3

Remember that Ruby (Chef) uses sh, not bash

3http://wiki.opscode.com/display/chef/Bootstrap+Chef+RubyGems+

Installation

Useful Links

http://www.opscode.com/chef/

http://help.opscode.com/faqs/start/how-to-get-started

http://cookbooks.opscode.com/

https://github.com/opscode/cookbooks

Thank You

Questions?

top related