Chefの環境構築
Chefのインストール
サーバー構成管理ツール「Chef」のインストールは、コマンド1つで実行できます。[namihira@xx.xx.xx.xx]~/chef% curl -U (プロキシユーザ名):(プロキシパスワード) -x (プロキシサーバ):(ポート) -L https://www.opscode.com/chef/install.sh | sudo bash % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 14101 100 14101 0 0 15465 0 --:--:-- --:--:-- --:--:-- 19916 Downloading Chef for el... downloading https://www.opscode.com/chef/metadata?v=&prerelease=false&p=el&pv=6&m=x86_64 to file /tmp/install.sh.16053/metadata.txt trying wget... url https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.8.2-1.el6.x86_64.rpm md5 10f3d0da82efa973fe91cc24a6a74549 sha256 044558f38d25bbf75dbd5790ccce892a38e5e9f2a091ed55367ab914fbd1cfed downloaded metadata file looks valid... downloading https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.8.2-1.el6.x86_64.rpm to file /tmp/install.sh.16053/chef-.x86_64.rpm trying wget... Checksum compare with sha256sum succeeded. Installing Chef installing with rpm... 警告: /tmp/install.sh.16053/chef-.x86_64.rpm: ヘッダ V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY 準備中... ########################################### [100%] 1:chef ########################################### [100%] Thank you for installing Chef! [namihira@xx.xx.xx.xx]~/chef%
chef-repoを用意する
Chefを利用するためのベースとなるパッケージをGithubのChefリポジトリからとってきます。[namihira@xx.xx.xx.xx]~/chef/% wget https://github.com/opscode/chef-repo/archive/master.zip [namihira@xx.xx.xx.xx]~/chef% unzip master [namihira@xx.xx.xx.xx]~/chef% mv chef-repo.master chef-repo [namihira@xx.xx.xx.xx]~/chef% mv chef-repo [namihira@xx.xx.xx.xx]~/chef/chef-repo% ls LICENSE README.md Rakefile certificates chefignore config cookbooks data_bags environments roles
cookbookの作成
cookbookを作成します。今回は、apacheのインストールをしてみます。
[namihira@xx.xx.xx.xx]~/chef/chef-repo/cookbooks% knife cookbook create apache -o . WARNING: No knife configuration file found ** Creating cookbook apache ** Creating README for cookbook: apache ** Creating CHANGELOG for cookbook: apache ** Creating metadata for cookbook: apache [namihira@xx.xx.xx.xx]~/chef/chef-repo/cookbooks%
設定ファイルを作成する
通常はインターネット上に公開されているcookbookを利用すればいいですが、今回は自分で作成してみます。chef-repo/cookbooks/apache/recipes/default.rb
# # Cookbook Name:: apache # Recipe:: default # # Copyright 2013, kohsuke Namihira # # All rights reserved - Do Not Redistribute # package 'apache2' do case node[ :platform ] when 'redhat', 'centos' package_name 'httpd' when 'debian', 'ubuntu' package_name 'apache2' end end # # set content # template 'index.html' do case node[ :platform ] when 'redhat', 'centos' path '/var/www/html/index.html' when 'debian', 'ubuntu' path '/var/www/index.html' end source 'index.html.erb' mode 0644 variables( { :fqdn => node[ :fqdn ] } ) end # # set auto start and restart apache2 # service 'apache2' do case node[ :platform ] when 'redhat', 'centos' service_name 'httpd' when 'debian', 'ubuntu' service_name 'apache2' end action [ :enable, :start ] end # # [EOF] #
chef-repo/cookbooks/apache2/templates/default/index.html.erb
Welcome to <%= @fqdn %>
chef-repo/solo.json
実行するレシピの一覧
{ "run_list": [ "recipe[apache2]" ] }
chef-repo/solo.json
cookbookへのパス
cookbook_path [ '/home/namihira/chef/chef-repo/cookbooks' ]
実行してみる
[namihira@xx.xx.xx.xx]~/chef/chef-repo% sudo chef-solo -j solo.json -c solo.rb
確認してみる
[namihira@xx.xx.xx.xx]~/chef/chef-repo% curl http://(自マシンのIPアドレス) Welcome to hogehoge
表示された\(^o^)/