SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

インフラ構成管理ツールを使いこなす!コードではじめるサーバ構築

Chefで3分クッキング! Webサーバ構築のレシピをRubyで書いてみよう

インフラ構成管理ツールを使いこなす! コードではじめるサーバ構築 第3回

  • X ポスト
  • このエントリーをはてなブックマークに追加

レシピを作る

 では、Webサーバを構築するためのCookBookを作っていきます。今回のサンプルでは、Apache httpdとPHPを使ったWebアプリケーション実行環境を作成します。構築の手順は次のような流れになります。

Webサーバの構築手順
Webサーバの構築手順

 このインフラ構築の手順にそって、Chefではレシピをコーディングします。作成したCookBookのひな形ディレクトリにある「E:¥chef-sample¥httpserver¥apache¥recipes¥default.rb」にコードを書いていきます。

Remiリポジトリのダウンロード

 リポジトリとは、よく使われるミドルウエアや便利なパッケージなどさまざまなソフトウエアを集めて管理しているものです。CentOSでは、Webサーバの構築に必要なミドルウエアやパッケージは、LinuxのRPM互換パッケージ管理システムであるyumレポジトリを使ってインストールしますが、パッケージによっては最新版が導入できないものもあります。今回はPHP5.5をインストールするため、サードパーティのRemiレポジトリを導入します。

 まず、ネットワーク上のRemiパッケージのrpmファイルをダウンロードします。ダウンロードはremote_fileリソースというChef専用の命令を使って、次の構文でコードを書きます。

リスト6 ファイルのダウンロード構文
remote_file "ダウンロードしたファイルの保存場所" do
  source "ダウンロード元のURL"
  action :create
end

 たとえば「http://rpms.famillecollet.com/enterprise/remi-release-6.rpm」からパッケージをダウンロードして「/tmp/remi-release-6.rpm」に保存したいときは、次のコードになります。

リスト7 Remiパッケージのダウンロード
# 1. Remiリポジトリのダウンロード
remote_file "/tmp/remi-release-6.rpm" do
  source "http://rpms.famillecollet.com/enterprise/remi-release-6.rpm"
  action :create
end

 なお、#で始まる行はコメント行ですので実行されません。

 remote_fileリソースの詳細なリファレンスについては以下を参照してください。

Remiリポジトリのインストール

 次に、ダウンロードしたRemiリポジトリのパッケージをインストールします。ローカル上のrpmファイルからパッケージをインストールするときは、以下のrpm_packageリソースを使って、次の構文でコードを書きます。

リスト8 パッケージインストールの構文
rpm_package "パッケージの名前" do
  source "パッケージの保存場所"
  action :install
end

 たとえば、「/tmp/remi-release-6.rpm」に保存されたファイルを使ってインストールするときは、次のコードになります。

リスト9 rpmインストールの構文
# 2. Remiリポジトリのインストール
rpm_package "remi-release-6" do
  source "/tmp/remi-release-6.rpm"
  action :install
end

 また、インストールだけでなくパッケージのアップデートや削除もできます。詳細なリファレンスについては以下を参照してください。

Apache httpd/PHPのインストール

 続いて、Apache httpdとPHPをインストールするためのコードを説明します。パッケージをインストールするときは、以下のpackegeリソースを使って、次の構文でコードを書きます。

リスト10 パッケージインストールの構文
package "パッケージ名" do
  action :install
end

 たとえば、Apache httpdをインストールするためのコードは次のとおりです。

リスト11 Apache httpdインストール
package "httpd" do
    action :install
end

 また、パッケージを複数インストールするときは、Rubyのループ構文を使います。

リスト12 Rubyのループ構文
オブジェクト.each do |変数|
  処理
end

 たとえばApache httpdとphp/php-mbstring/php-pearの4つのパッケージをインストールするときは、eachメソッドを使って次のように記述します。

リスト13 ループ処理によるインストール(default.rbの抜粋)
# 3. Apache httpdとPHPのインストール
%w[
  httpd
  php
  php-mbstring
  php-pear
].each do |pkg|
  package "#{pkg}" do
    action :install
    options '--enablerepo=remi-php55'
  end
end

 CentOS 6.5では、標準でPHP5.3がインストールされますが、今回はPHP5.5をインストールしたいので、先ほど導入したRemiリポジトリを使用します。Remiリポジトリを使用したいときは、optionsで'--enablerepo=remi-php55'を指定します。

 また、インストールだけでなくパッケージのアップデートや削除もできます。詳細なリファレンスについては以下を参照してください。

おわりに

 今回の記事では、Chefとはどのようなものか? とChefの導入の仕方、Chefを使ったパッケージのインストール手順について紹介しました。

 次回の記事では、ChefのCookBook作成の続きで、Apache httpdの設定ファイルの作成やWebサーバにデプロイするファイルの設定などを紹介します。また、作成したChefのCookBookをVagrantから呼出し、ローカルPCの仮想環境でインフラを自動で構築する手順を紹介します。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
インフラ構成管理ツールを使いこなす!コードではじめるサーバ構築連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 阿佐 志保(アサ シホ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8416 2015/02/04 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング