rpmパッケージ(httpd)をインストール(yum)
$ cd chef/foo-repo
$ vi site-cookbooks/build/recipes/default.rb
# 以下を追加
package "https" do
action :install
end
$ knife solo cook foo
〜略〜
Recipe: build::default
* log[Build start...] action write
* package[httpd] action install
- install version 2.2.15-29.el6.centos of package httpd
Chef Client finished, 2 resources updated
rpmパッケージ(httpd)をインストール(rpm)
事前に"$ yumdownloader httpd --resolv"でファイル取得(httpdとhttp-toolsがダウンロードされた)
なお、配布したrpmインストール時に依存関係を解決できない場合は、chefがyumコマンドで必要なパッケージを自動でインストールしてくれる;-)
$ cd chef/foo-repo $ cp httpd-2.2.15-29.el6.centos.x86_64.rpm site-cookbooks/build/files/default/ $ cp httpd-tools-2.2.15-29.el6.centos.x86_64.rpm site-cookbooks/build/files/default/ $ vi site-cookbooks/build/recipes/default.rb # 以下を追加 rpmfiles = ['httpd-2.2.15-29.el6.centos.x86_64.rpm', 'httpd-tools-2.2.15-29.el6.centos.x86_64.rpm'] rpmfiles.each do |rpm| cookbook_file "/tmp/#{rpm}" do mode 0644 end end rpmfiles.each do |rpm| package "httpd" do action :install source "/tmp/#{rpm}" end end
$ knife solo cook foo
〜略〜
Recipe: build::default
* log[Build start...] action write
* package[httpd] action install
- install version 2.2.15-29.el6.centos of package httpd
Chef Client finished, 2 resources updated
サービス(httpd)の起動と自動起動設定on
$ cd chef/foo-repo $ vi site-cookbooks/build/recipes/default.rb # 以下を追加 service "httpd" do action [:start, :enable] end $ knife solo cook foo 〜略〜 * service[httpd] action start - start service service[httpd] * service[httpd] action enable - enable service service[httpd]
複数サービス(iptables,ip6tables,mysqld)の停止と自動起動設定off
$ vi site-cookbooks/build/recipes/default.rb # 以下を追加 %w{iptables ip6tables mysqld}.each do |p| service p do action [:stop, :disable] end end $ knife solo cook foo 〜略〜
テンプレートファイルの配布
httpdの設定ファイルを置き換え(Port番号変更)とサービス再起動
- default.rb
$ vi site-cookbooks/build/recipes/default.rb template "httpd.conf" do path "/etc/httpd/conf/httpd.conf" source "httpd.conf.erb" mode 0644 notifies :restart, 'service[httpd]' end
- nodes
$ vi nodes/foo.json { "httpd": { "port": 8080 }, "run_list":[ "recipe[build]" ] }
- templates
$ vi site-cookbooks/buid/templates/default/httpd.conf.erb 〜略〜 # 待ち受けPort設定を以下を変更 Listen <%= node['httpd']['port'] %> 〜略〜
[実行]
$ knife solo cook foo
$ ssh foo
$ grep ^Listen /etc/httpd/conf/httpd.conf
Listen 8080
テンプレートファイル配置(ホスト名等の情報を付与)
- default.rb
$ vi site-cookbooks/build/recipes/default.rb template "index.html" do path "/var/www/html/index.html" source "index.html.erb" mode 0644 end
- nodes
$ vi nodes/foo.json { "owner": { "name": "Foo" }, "httpd": { "port": 8080 }, "run_list":[ "recipe[build]" ] }
- templates
$ vi site-cookbooks/build/templates/default/index.html.erb Print: <%= node[:platform] %> : <%= node['owner']['name'] %>.
[実行]
$ knife solo cook foo
$ ssh foo
$ cat /var/www/html/index.html
<html>
Print: Foo.com : Foo.
</html>