インフラ構成管理ツールを使いこなす! コードではじめるサーバ構築 第4回
WINGSプロジェクト 阿佐 志保 [著] 山田 祥寛 [監修] 2015/03/02 14:00
このエントリーをはてなブックマークに追加

サンプルファイル 18.41 KB
1 2 3 →

 本連載は、SI業界に入ったばかりの新米業務アプリケーション開発者や、SI業界を目指す学生さんを対象とした、インフラ構成管理ツールを使ってコードでインフラを構築するための講座です。また、インフラエンジニア/システムオペレータで、物理環境でのインフラ構築/運用管理は経験があるけど、プログラミングが苦手という方にも読み進めていただけるように、文法などの解説を入れながら説明します。本連載では、Vagrant/Chef/Dockerをつかって簡単なインフラを構築していきます。今回は、Chefを使ってローカルにWebアプリの開発環境をつくる方法について説明します。

はじめに

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

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

対象読者

 本記事は、次の方を対象にしています。

  • コードを使ってインフラの構成管理がしたい人
  • ネットワークやLinuxの基礎知識がある人
  • Webシステムの開発環境を構築したことがある人

Webサーバを設定するCookBookの作成

 前回作成したレシピでChefを使ってApache httpdおよびPHPのインストールが出来たので、次は設定ファイルの作成やデプロイするファイルの配置などを行うCookBookを作成していきます。

httpd.confの作成

 インストールしたApache httpdの各種設定を行うファイルは「httpd.conf」です。このhttpd.confにはインストール時にはデフォルトのファイルが自動生成されますが、このファイルを環境に合わせて変更する必要があります。Chefは設定ファイルのテンプレートや設定したい値をあらかじめ用意しておくことで、任意のファイルを生成することができます。

テンプレートから設定ファイルの生成
テンプレートから設定ファイルの生成

 たとえば、httpサーバの管理者のメールアドレスやホスト名などを環境に合わせて生成して仮想環境に展開したい場合は、次の手順でCookBookを作成します。

 まず、生成したいhttpd.confのテンプレートとなるファイルを以下の場所に置きます。拡張子はRubyのテンプレートファイルの拡張子である「erb」にします。

E:\chef-sample\httpserver\apache\templates\default\httpd.conf.erb

 次に、配置したテンプレートであるhttpd.conf.erbを以下のように修正します。

リスト1 テンプレートの修正(httpd.conf.erbの抜粋)
~中略~
ServerAdmin <%= @admin %>
~中略~
ServerName <%= @servername %>:80
~中略

 これは、設定ファイル中のServerAdminおよびServerNameの値をChefで指定した@adminおよび@servernameという属性の値に書き換えるという意味になります。

 次に、これらの属性値を定義します。Chefでの属性値は以下のファイルに定義します。

E:\chef-sample\httpserver\apache\attributes\default.rb

 このファイルに以下のように属性値を記述します。

リスト2 属性値の定義(attributes\default.rbの抜粋)
default['apache']['admin'] = 'root@test-domain.com'
default['apache']['servername'] = 'www.test-domain.com'

 これは、apacheという名前のCookBook配下のadminおよびservernameという属性を、'root@test-domain.com'および'www.test-domain.com'に置き換えるという意味になります。

 最後に、このテンプレートと属性値からhttpd.confを生成するレシピを書きます。

 レシピは以下のファイルです。

E:\chef-sample\httpserver\apache\recipes\default.rb
リスト3 属性値の定義(attributes\default.rbの抜粋)
# 4. http.confの作成
template "httpd.conf" do
  source "httpd.conf.erb"
  path "/etc/httpd/conf/httpd.conf"
  group "root"
  owner "root"
  mode "0644"
  variables(
    :admin=>node['apache']['admin'],
    :servername=>node['apache']['servername']
  )
end

 このコードは、sourceで指定したテンプレートをもとにして、pathで指定した"/etc/httpd/conf/httpd.conf"を生成し、variablesで属性値を変数として割り当てます。

 また、生成したファイルの属性を以下のように指定しています。

ファイル属性の設定
項目 指定値 説明
group "root" ファイルのグループをrootにする
owner "root" ファイルの所有者をrootにする
mode "0644" ファイルのアクセス権を0644にする(所有者は読み書き可能/グループおよび他のユーザは読みのみ可)

 テンプレートの詳細については以下の公式サイトを参照してください。


1 2 3
→
INDEX
インフラを自動で構築! ChefでローカルにWebアプリの開発環境をつくるRubyコードを書いてみよう
Page1
はじめに
対象読者
Webサーバを設定するCookBookの作成
Vagrantによる仮想環境の構築
おわりに
こちらの関連記事もおすすめです

プロフィール

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


<個人紹介>
横浜市在住の主婦。
結婚前は基盤システム設計/構築などを行っていました。 今は子育てと家事とハンドメイドに追われる毎日です。ビーズアクセ作ったり、洋服縫ったり、電子工作したり、、、モノを作るのが大好きです。

  • 著書: 「Windows 8開発ポケットリファレンス」(技術評論社)
  • Twitter: @_dr_asa

 


プロフィール
山田 祥寛 ヤマダ ヨシヒロ

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。
主な著書に「入門シリーズ(サーバサイドAjax/XMLDB/PEAR/Smarty)」「独習シリーズ(ASP.NET/PHP)」「10日でおぼえる入門教室シリーズ(ASP.NET/PHP/Jakarta/JSP&サーブレット/XML)」「Pocket詳解辞典シリーズ(ASP.NET/PHP/Perl&CGI)」「今日からつかえるシリーズ(PHP/JSP&サーブレット/XML/ASP)」「書き込み式 SQLのドリル」他、著書多数


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。