LoginSignup
9
10

More than 5 years have passed since last update.

CentOS7にNginx1.9をインストールするChefのレシピ

Last updated at Posted at 2015-06-03

CentOS7にNginx1.9をインストールする方法
をChef化してみます。

Cookbook名はnginx、置き場所は$repo/site-cookbooks/nginxとます。

(ターゲットはCentOS7です。他のディストリビューションの場合は少し修正がいるかもしれません。)

Nginxをインストールするレシピ

ちょいちょいっとレシピを書きます。

recipes/default.rb
template "/etc/yum.repos.d/nginx.repo" do
  owner "root"
  group "root"
  mode "0644"
end

package "nginx" do
  action :install
  options "--enablerepo=nginx"
end

service "nginx" do
  action [:enable, :start]
  supports :start => true, :status => true, :restart => true, :reload => true
end
templates/default/nginx.repo.erb
# nginx用のレポジトリ設定ファイル
# see http://nginx.org/en/linux_packages.html#stable
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=0

これをプロビジョン実行すると、インストール完了・サービス起動・自動起動設定までやってくれます。

sudo chef-solo -c solo.rb -j localhost.json  -o nginx

ただこれだけだとNginxの設定ファイルの管理ができないので、設定ファイルの管理もやってしまいましょう。

設定ファイルもChefで管理するには

Nginxインストール後の/etc/nginx/ 以下をまるっとエクスポート

cp -ar /etc/nginx/ /vagrant/site-cookbooks/nginx/templates/default/

(私はVagrantを使っているのので) /vagrant/以下にコピーすることで、設定ファイルをホストマシンのレポジトリ管理下に置くことができます。

エクスポート後に、ホストマシン側で site-cookbooks/nginx/templates/default/ をまるっとコミットします。

設定ファイルをプロビジョンする

さっきのレシピにこのように追記します。
設定ファイルのリストは、ディストリビューションによって異なるかもしれません。

( conf.d以下の設定ファイルは単なるサンプルっぽかったのではしょりました。)

recipes/default.rb
%w{
nginx.conf
fastcgi_params
koi-utf
koi-win
mime.types
scgi_params
uwsgi_params
win-utf
}.each do |file|
  template "/etc/nginx/#{file}" do
    source file
    owner "root"
    group "root"
    mode "0644"
    notifies :start, 'service[nginx]'
    notifies :reload, 'service[nginx]'
  end
end

完成したらエイっとプロビジョンして、差分がでなければ (Chef Client finished, 0 resources updated のような出力が出れば)OKです。

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10