Apache、PHP、MySQLパッケージのインストールで見るChefのRecipeの基本的な書き方サーバー管理者のためのChef超入門(4)(1/2 ページ)

エンタープライズ向け機能が充実してきたChefを使って高速かつ精度の高いサーバーインフラを構築/管理する方法について解説する連載。今回は、外部Cookbookを利用したリポジトリ設定や、yumによってApache、PHP、MySQLパッケージをインストールするRecipeの書き方と実行の仕方などについて解説します。

» 2015年05月18日 05時00分 公開
[大喜多利哉@IT]

外部Cookbookを利用したリポジトリ設定&yumによってパッケージをインストールするRecipeを実行

「サーバー管理者のためのChef超入門」のインデックス

連載目次

 前回の「WordPress構築で学ぶ、サーバー構築作業をChefのCookbookとして記述するためのポイント」では手動構築によるWordPressのインストール手順や、Cookbookの構成、WordPress構築をChefのCookbookにしていくための方針について解説しました。今回はChefのCookbookを作成しながら、Chefの構成要素を理解していきましょう。

 まず、前回解説した「構築環境の前提条件」と「Cookbookの作成方針」を再度記載しておきます。

WordPress構築環境の前提条件

  1. OSはCentOS 6.6を使用
  2. ApacheとMySQLは同一サーバー内(「ノード」)にインストールする
  3. MySQLはRemiリポジトリを使用してインストールする
  4. 「wp.example.com」というバーチャルホストを作成し、ホスト名を「wp.example.com」、ドキュメントルートを「/var/www/wp.example.com/wordpress」とする
  5. エラーログとカスタムログのファイル名を以下の通りとする
    • wp.example.com-error_log
    • wp.example.com-access_log
  6. MySQLにwordpressユーザーとwordpressデータベースを作成し、ユーザーにデータベースへのアクセス権を付与する

WordPress構築Cookbookの作成方針

【1】リポジトリ設定→外部Cookbookを利用
【2】Apache、PHP、MySQLのインストール→Resourceで定義
【3】WordPressのダウンロードと解凍→Resourceで定義
【4】バーチャルホスト設定→Templateを使用
【5】WordPress用MySQL設定→Templateを使用

 このうち今回は【1】と【2】について作業を進めていきます。

【1】外部Cookbookを利用したリポジトリ設定

 外部(サードパーティ製)Cookbookとして、EPELやRemiのリポジトリをインストールできるCookbookが公開されているので、そちらを使用します。

 最初に「yum-epel」「yum-remi」のCookbookをインストールします。

$ sudo knife cookbook site install yum-epel
$ sudo knife cookbook site install yum-remi

 ノードにKnife-Zeroを使用してChef-Zeroをセットアップします。

$ sudo bundle exec knife zero bootstrap node01 -x <ユーザー名> --sudo -P <パスワード>
Connecting to node01
node01 Installing Chef Client...
node01 --2015-05-11 22:58:13--  https://www.opscode.com/chef/install.sh
node01 Resolving www.opscode.com... 166.78.227.233
node01 Connecting to www.opscode.com|166.78.227.233|:443... connected.
node01 HTTP request sent, awaiting response... 200 OK
<<<中略>>>
node01 Preparing...                                                   ########################################### [100%]
node01    1:chef                                                      ########################################### [100%]
node01 Thank you for installing Chef!
node01 Starting first Chef Client run...
node01 Starting Chef Client, version 12.3.0
<<<中略>>>
node01 Running handlers:
node01 Running handlers complete
node01 Chef Client finished, 0/0 resources updated in 1.63139453 seconds

 セットアップが完了したら、ノードのrun_listに対して実行するCookbookを追加していきます。

 今回はyum-epelとyum-remiの2つを実行させるために、「knife node run_list add」コマンドを2回実行します。

$ sudo knife node run_list add node01 'recipe[yum-epel]'
node01:
  run_list: recipe[yum-epel]
$ sudo knife node run_list add node01 'recipe[yum-remi]'
node01:
  run_list:
    recipe[yum-epel]
    recipe[yum-remi]

 ノードに対してrun_listに登録したCookbookを実行します。

$ sudo bundle exec knife zero chef_client 'name:node01' -x <ユーザー名> -P <パスワード> --sudo
node01 Starting Chef Client, version 12.3.0
node01 resolving cookbooks for run list: ["yum-epel", "yum-remi"]
node01 Synchronizing Cookbooks:
node01   - yum-epel
node01   - yum-remi
<<<中略>>>
node01 Recipe: yum-epel::default
node01   * yum_repository[epel] action create
node01     * template[/etc/yum.repos.d/epel.repo] action create
<<<中略>>>
node01 Recipe: yum-remi::default
node01   * yum_repository[remi] action create
node01     * template[/etc/yum.repos.d/remi.repo] action create
<<<中略>>>
node01 Running handlers:
node01 Running handlers complete
node01 Chef Client finished, **/** resources updated in **.******** seconds

 インストールが成功したら、続いてパッケージのインストールを行います。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。