使用Chef的配方在CentOS7上安装Nginx1.9
尝试将在CentOS7上安装Nginx1.9的方法转化为使用Chef的方式。
Cookbook的名称为nginx,位置为$repo/site-cookbooks/nginx。
目标是CentOS7。如果是其他发行版,可能需要稍作修改。
安装Nginx的步骤
我会不时写一下食谱。
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
# 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以下的配置文件只是简单的示例,我进行了简化。)
%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 provision”,如果没有差异(如出现 “Chef Client finished, 0 resources updated”),则表示OK。