chef-soloで作業環境構築の自動化


VPS
akahigessh


Chef


Chef
Chefchef-solo

Ruby


ChefChef
Chef使
$ wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
$ sudo rpm -ivh epel-release-5-4.noarch.rpm
$ wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
$ sudo rpm -ivh rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
$ sudo yum install -y git
$ sudo yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel git
$ sudo yum update

RubyGitGitChef
Ruby 1.9.2
$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.tar.bz2
$ tar xjf ruby-1.9.2-p0.tar.bz2
$ cd ruby-1.9.2-p0
$ ./configure
$ make
$ sudo make install


Chef

$ sudo gem install chef --no-rdoc --no-ri

chef-solo

chef-repochef-solo


ChefGitHub
$ git clone git://github.com/opscode/chef-repo.git
$ cd chef-repo
$ mkdir .chef
.chef/solo.rb
file_cache_path "/tmp/chef-solo"
cookbook_path "/home/akahige/chef-repo/cookbooks"


chef-solo
.chef/chef.json
{
  "run_list": [ "recipe[base_packages]" ]
}

JSON
base_packages
chef-solo
$ sudo chef-solo -c .chef/solo.rb -j .chef/chef.json


$ rake new_cookbook COOKBOOK=base_packages

deprecatedknife使knife使

cookbooks/base_packages/recipes/default.rb

recipes/default.rb
%w{zsh screen nmap}.each do |package_name|
  package package_name do
    action :install
  end
end

zshscreennmap
Ruby
chef-solo
$ sudo chef-solo -c .chef/solo.rb -j .chef/chef.json

zshscreennmap

zsh


zsh使
.zshrc

zsh
$ rake new_cookbook COOKBOOK=zsh
cookbooks/zsh/recipes/default.rb
package "zsh" do
  action :install
end

rcfile = '/home/akahige/.zshrc'
template rcfile do
  source "zshrc.erb"
end

file rcfile do
  owner "akahige"
  group "akahige"
  mode "0644"
end


filetemplatesourcecookbook_file

base_packagesrecipes/default.rb


cookbooks/zsh/templates/default/zshrc.erb

.zshrczshrc.erb



.chef/chef.json
{
  "run_list": [ "recipe[base_packages]", "recipe[zsh]" ]
}

run_list
chef-solo
$ sudo chef-solo -c .chef/solo.rb -j .chef/chef.json

.zshrc

screen


.screenrczsh
$ rake new_cookbook COOKBOOK=screen
cookbooks/screen/recipes/default.rb
package "screen" do
  action :install
end

rcfile = '/home/akahige/.screenrc'
template rcfile do
  source "screenrc.erb"
end

file rcfile do
  owner "akahige"
  group "akahige"
  mode "0644"
end

zsh
DRY
cookbooks/screen/templates/default/screenrc.erb

.screenrcscreenrc.erb

.chef/chef.json
{
  "run_list": [ "recipe[base_packages]", "recipe[zsh]", "recipe[screen]" ]
}

screen
chef-solo
$ sudo chef-solo -c .chef/solo.rb -j .chef/chef.json

 screen使

Git


Git使gituser.nameuser.email
Chef
cookbooks/base_packages/recipes/default.rb
%w{git nmap}.each do |package_name|
  package package_name do
    action :install
  end
end

`git config --global user.name "akahige"`
`git config --global user.email "akahigeg@gmail.com"`


~/.gitconfigrc

zshscreengit
chef-solo
$ sudo chef-solo -c .chef/solo.rb -j .chef/chef.json

git

$ git commit -a


CentOSzshscreen使

sshvim
chef-solo

Puppet
Ruby

TDD
Puppet
TDDrake test_cookbooks

Capistranochef-solo
chef.jsonweb.jsondb.json

Chef

2010/09/30


ChefData Bags使
knife

Chef使Chef

2011/05/23


chef-soloCapistranoChef

chef-soloで作業環境構築の自動化” に対して1件のコメントがあります。

コメントは受け付けていません。

前の記事

Chefを試してみた