LoginSignup
4
5

More than 5 years have passed since last update.

Chef入門(No.02 : パッケージインストール)

Posted at

Chefのレシピ編です。
Chefのインストールはこちらから。

今回はパッケージのインストールです。
サーバ構築での利用頻度は高いでしょう。
手始めにApache httpdをインストールしてみます。

最新のhttpdをインストールする為、以下の手順で実施します。

  1. レポジトリ追加インストール
  2. レポジトリURLの変更
  3. httpdインストール

cookbook作成

まずはcookbook作成です。

cookbook作成
$ cd chef-repo

# cookbook作成
$ knife cookbook create httpd -o site-cookbooks

レポジトリ追加インストール

CentOSのデフォルトレポジトリの場合、Version 2.2.15までのインストールになる。
このため、最新のパッケージ(2.2.27)が配信されているレポジトリを別にインストールする。

site-cookbooks/httpd/recipes/default.rb
# レシピ編集
$ vi site-cookbooks/httpd/recipes/default.rb

# 以下を入力

# RPMファイル取得
remote_file "/tmp/centalt-release-6-1.noarch.rpm"do
    source "http://mirror.sysadminguide.net/centalt/repository/centos/6/x86_64/centalt-release-6-1.noarch.rpm"
    # インストールしてない場合、ファイルを取得する
    not_if "rpm -qa | grep -q '^centalt-release'"
    action :create
    # ファイル取得後に指定レシピを実施
    notifies :install, "rpm_package[centalt-release]", :immediately
end

# RPMパッケージインストール
rpm_package "centalt-release" do
    source "/tmp/centalt-release-6-1.noarch.rpm"
    action :install
end

レシピ適用ノード情報を編集する。

remote_ip.json
$ vi nodes/remote_ip.json
# run_listに以下を追加する
# 前項目への,(カンマ)の追加忘れに注意
"recipe[httpd]"

準備ができたので、Let's Cook!!

Let's_Cook!!
$ knife solo cook remote_ip -i ../id_rsa

レポジトリURLの変更

インストールしたレポジトリのURLが現在利用不可の為、変更が必要です。

まずは以下のファイルを作成します。

site-cookbooks/httpd/files/default/centalt.repo
[CentALT]
name=CentALT Packages for Enterprise Linux 6 - $basearch
# baseurl=http://centos.alt.ru/repository/centos/6/$basearch/
baseurl=http://mirror.sysadminguide.net/centalt/repository/centos/6/$basearch/
enabled=1
gpgcheck=0

レシピに追記します。

site-cookbooks/httpd/recipes/default.rb
# レシピ編集
$ vi site-cookbooks/httpd/recipes/default.rb

# 以下を追記
# レポジトリ設定ファイルを配置する
cookbook_file "/etc/yum.repos.d/centalt.repo" do
    source "centalt.repo"
    mode '644'
    owner 'root'
    group 'root'
end

準備ができたので、Let's cook!!

Let's_Cook!!
$ knife solo cook remote_ip -i ../id_rsa

httpdインストール

前準備ができたのでhttpdをインストールします。

レシピに追記します。

site-cookbooks/httpd/recipes/default.rb
# レシピ編集
$ vi site-cookbooks/httpd/recipes/default.rb

# 以下を追記
# httpdインストール
package "httpd" do
    action:install
    # CentALTレポジトリを利用する
    options "--enablerepo=CentALT"
end

# httpdの自動起動(enable)と起動(start)
service "httpd" do
    action [ :enable, :start ]
end

準備ができたので、Let's cook!!

レポジトリインストール
$ knife solo cook remote_ip -i ../id_rsa

構築対象サーバへブラウザでアクセスして動作確認をしてください。
httpdの初期画面が表示されれば正常に稼動しています。

今回は一般的なパッケージインストールについて学習しました。
一度レシピを作るだけで使い回しが出来るので積極的に使っていきましょう。

おまけ

httpdの設定ファイルも同じように配布することができます。
まずは元の設定ファイルをコピーします。

httpd.confのコピーと編集
# デフォルト設定ファイルを以下のディレクトリにコピーしておく。
$ scp -i <ssh private key> <remote ip>:/etc/httpd/conf/httpd.conf site-cookbooks/httpd/templates/default/httpd.conf.erb

# site-cookbooks/httpd/templates/default/httpd.conf.erb を編集する
site-cookbooks/httpd/recipes/default.rb
# 設定ファイルを配置するレシピを追記する
service "httpd" do
    # 設定ファイル配置後に実施するreloadを許可する
    supports :status => true, :restart => true, :reload => true
    action [ :enable, :start ]
end

# 設定ファイル(httpd.conf)を配置
template "httpd.conf" do
    path "/etc/httpd/conf/httpd.conf"
    source "httpd.conf.erb"
    owner 'root'
    group 'root'
    mode '644'

    # 配置後httpdを即時reloadする
    notifies :reload, "service[httpd]", :immediately
end

後は同じようにCookして配布します。
これでWebサーバに配布する設定ファイルを一箇所で管理することができます。

4
5
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
4
5