WordPressのダウンロード/配置とバーチャルホスト設定で見るChefの変数とAttributeの書き方の基本&Template活用:サーバー管理者のためのChef超入門(5)(1/2 ページ)
エンタープライズ向け機能が充実してきたChefを使って高速かつ精度の高いサーバーインフラを構築/管理する方法について解説する連載。今回は、WordPressのダウンロードや解凍、バーチャルホスト設定を例にChefの変数とAttributeの基本的な書き方を解説します。
Chefならではの機能を活用して、より高度な「サーバー構成管理」を
前回の「Apache、PHP、MySQLパッケージのインストールで見るChefのRecipeの基本的な書き方」では具体的にChefのCookbookを作成しながら、Chefの構成要素について解説してきました。
前回は「RecipeはDSLという命令文の集合体で構成されている」ということを中心に、Recipeを書くに当たっての初歩的な部分にフォーカスして解説しました。今回はさらに一歩踏み込んで、Chefならではの機能を活用して、より高度な「サーバー構成管理」を可能にするための入り口に入っていきましょう。
まず、連載第3回の「WordPress構築で学ぶ、サーバー構築作業をChefのCookbookとして記述するためのポイント」で解説した「構築環境の前提条件」と「Cookbookの作成方針」を再度記載しておきます。
WordPress構築環境の前提条件
- OSはCentOS 6.6を使用
 - ApacheとMySQLは同一サーバー内(「ノード」)にインストールする
 - MySQLはRemiリポジトリを使用してインストールする
 - 「wp.example.com」というバーチャルホストを作成し、ホスト名を「wp.example.com」、ドキュメントルートを「/var/www/wp.example.com/wordpress」とする
 - エラーログとカスタムログのファイル名を以下の通りとする
- wp.example.com-error_log
 - wp.example.com-access_log
 
 - MySQLにwordpressユーザーとwordpressデータベースを作成し、ユーザーにデータベースへのアクセス権を付与する
 
前回で3.までが完了しています。今回は4.と5.について記載します。
WordPress構築Cookbookの作成方針
【1】リポジトリ設定→外部Cookbookを利用
【2】Apache、PHP、MySQLのインストール→Resourceで定義
【3】WordPressのダウンロードと解凍→Resourceで定義
【4】バーチャルホスト設定→Templateを使用
【5】WordPress用MySQL設定→Templateを使用
このうち今回は【3】と【4】について作業を進めていきます。
今回追加する部分
実際に実行している内容は下記の通りです。
- WordPressのプログラムダウンロード/配置
 - Apacheの設定
 - httpd/mysqldの起動
 
前回作成した「cookbook/wordpress01/recipes/default.rb」に上記処理を追加したものが以下です。
#前回
package ['httpd', 'httpd-devel', 'mysql', 'mysql-server', 'mysql-devel', 'php', 'php-mysql']  do
  action :install
end
#以下今回追加分
#変数
filename = "#{node['wordpress']['wp_tar_name']}"
install_dir = "#{node['wordpress']['wp_dir']}"
remote_uri = "#{node['wordpress']['wp_tar_uri']}"
file_checksum = "#{node['wordpress']['wp_tar_sum']}"
httpd_conf_dir = "#{node['wordpress']['httpd_conf_dir']}"
 
#インストールディレクトリ設定
directory "#{install_dir}" do
  recursive true
  mode 0755
  owner "apache"
  group "apache"
  action :create
end
 
#WordPressダウンロード
remote_file "/tmp/#{filename}" do
  source "#{remote_uri}"
  checksum "#{file_checksum}"
end
 
#WordPress配置
script "install_wordpress" do
  interpreter "bash"
  user        "root"
  code <<-EOL
    install -d #{install_dir}
    tar zxvf /tmp/#{filename} -C #{install_dir}
  EOL
end
 
#httpd.conf配置
template "httpdconf" do
  path "#{httpd_conf_dir}httpd.conf"
  source "httpdconf.erb"
  mode 0644
end
 
#wordpressディレクトリのpermission変更
directory "#{install_dir}/wordpress" do
  recursive true
  mode 0755
  owner "apache"
  group "apache"
end
 
#httpd実行
service "httpd" do
  action :start
end
 
#mysqld実行
service "mysqld" do
  action :start
end
順を追って解説していきます。
Recipeにおける変数の定義
ChefのRecipeでは、変数は以下のように記述します。
<変数名> = <変数の値>
ChefにおけるAttributeの書き方
今回のRecipeでは以下のような書き方をしています。
remote_uri = "#{node['wordpress']['wp_tar_uri']}"
「#{node['***']['***]}」というのはChefでは「Attribute」と呼ばれるものです。
RecipeやTemplateなどCookbook内部で共通で利用可能な変数の設定方法です。ですので、ここではRecipeのローカル変数remote_uriに代入しています。
将来的に変更される可能性が高い値や、実行のたびに変更する必要がある値などは、個別のファイルにハードコーディングせずに「Attribute」としてまとめておくと、設定値の管理が楽になります。Chefを利用するメリットですので、ここはよく理解するようにしてください。
Attributeは以下のようにファイルに記述します。
default['wordpress']['wp_tar_name'] = 'wordpress-4.2.2-ja.tar.gz' default['wordpress']['wp_dir'] = '/var/www/wp.example.com' default['wordpress']['wp_tar_uri'] = 'https://ja.wordpress.org/wordpress-4.2.2-ja.tar.gz' default['wordpress']['wp_tar_sum'] = '7e34ba580aed16c4fd769f033b0e7fa79b7c5813ba52e4496f14da0ac4451373' default['wordpress']['httpd_conf_dir'] = '/etc/httpd/conf/' default['wordpress']['vhost_domain'] = 'wp.example.com'
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
環境構築自動化の手順と評価検証、Puppetの基礎知識
サーバー構築の自動化で利用される技術、自動化ツールとして「Kickstart」「Puppet」を紹介し、構築から運用まで、システムライフサイクル全体にわたる運用管理の自動化についても解説する連載。
OpenStackで激変するシステム開発・運用  “抽象化”が実現する「究極の自動化」とは
前回はOpenStackの活用ポイントと、今後のシステム開発・運用に与える影響――特に自動化にフォーカスして紹介した。今回は日本OpenStackユーザ会 会長の中島倫明氏が、「OpenStackによる自動化の仕組みと実施法」を分かりやすく解説する。
PowerShell Desired State Configuration(DSC)とは(前編)
Windows OSの設定や構成を変更する場合、GUIの管理ツールを使うのが一般的である。だが台数が多かったり、構成変更や以前の構成への復旧などが頻繁だったりするとGUIでは非常に面倒だし、間違いもしやすくなる。こんな場合はPowerShell DSCを使ってインフラ構築作業を自動化するとよい。
アプリ開発者もインフラ管理者も知っておきたいDockerの基礎知識
オープンソースのコンテナー管理ソフトウェアDockerについて主な機能と特徴、使用技術、動作環境などを紹介。ハイパーバイザー型とコンテナー型の仮想化の違いも解説します。