WordPressのダウンロード/配置とバーチャルホスト設定で見るChefの変数とAttributeの書き方の基本&Template活用:サーバー管理者のためのChef超入門(5)(2/2 ページ)
エンタープライズ向け機能が充実してきたChefを使って高速かつ精度の高いサーバーインフラを構築/管理する方法について解説する連載。今回は、WordPressのダウンロードや解凍、バーチャルホスト設定を例にChefの変数とAttributeの基本的な書き方を解説します。
【3】WordPressのダウンロードと解凍
WordPressインストールディレクトリの設定
directory "#{install_dir}" do recursive true mode 0755 owner "apache" group "apache" action :create end
WordPressをインストールするディレクトリを設定します。3行目のmodeでパーミッションの設定を、4・5行目のownerとgroupで所有者・グループの設定をしています。
この後の処理で、ここで作成したディレクトリの下にwordpressディレクトリが作成され、ドキュメントルートとして設定します。
remote_fileリソースでWordPressのダウンロードと解凍
#WordPressダウンロード remote_file "/tmp/#{filename}" do source "#{remote_uri}" checksum "#{file_checksum}" end
remote_fileリソースでは、指定されたURL(今回の場合は、attributeで定義された「https://ja.wordpress.org/wordpress-4.2.2-ja.tar.gz」)から「/tmp」にファイルをいったんダウンロードし、checksumでファイルの正当性を確認しています。
checksumは「sha256」です。「shasum -a 256 [FILENAME]」で取得できます。Webサイトに記載されている「md5sum」とは別の値になりますので、ご注意ください。
「手順書をChefのCookbookにする」上での最大の障壁――scriptリソースを利用したWordPressのファイル配置
#WordPress配置 script "install_wordpress" do interpreter "bash" user "root" code <<-EOL install -d #{install_dir} tar zxvf /tmp/#{filename} -C #{install_dir} EOL end
次にWordPress配置の部分ですが、恐らくここが「手順書をChefのCookbookにする」上での最大の障壁になると思っています。
Chefの設計思想としては、ChefのResourceでできることはResourceとして記述して実行することが推奨されます。ですが、往々にして「どうしてもResourceで記述できない」手順というのが出てくるものです。そこで登場するのが、最後の手段である「Chefにコマンドを実行させる」というものです。
scriptリソースでは、bashを呼び出してコマンドを実行させています。イメージとしては、ChefのRecipeの中にシェルスクリプトを書いているようなイメージです。
ここで注意していただきたいのは、「1つのscriptリソースであまりにも多数のコマンドを実行するように記述しないこと」です。scriptリソースはbashという外部プログラムを呼び出して実行内容(code)を渡しているだけなので、bashの動きをトレースできません。
そのため、あまりにも長々とコマンドを書くと、どこでエラーになったかが分からなくなります。筆者も、どうしてもこの手を使う場合は、かなり細かく記述するように考慮しています。
【4】バーチャルホスト設定
Templateファイルでhttpd.confの修正
#httpd.conf配置 template "httpdconf" do path "#{httpd_conf_dir}httpd.conf" source "httpdconf.erb" mode 0644 end
ここで実行している内容は、「httpdインストール時に作成されたhttpd.confファイルを「httpdconf.erb」というTemplateファイルを使って置き換える」というものです。
長くなりますが、今回使用したTemplateファイルをダウンロードできるようにしておきます。
見てもらいたいのは一番下の下記の部分で、バーチャルホストの設定値をAttributeで定義している部分です。こうすることで、設定内容の可視性を高め、Recipeの再利用性を高めています。
<VirtualHost *:80> ServerAdmin enginnering@ec2.tokyo DocumentRoot <%= node['wordpress']['wp_dir'] %>/wordpress ServerName <%= node['wordpress']['vhost_domain'] %> ErrorLog logs/<%= node['wordpress']['vhost_domain'] %>-error_log CustomLog logs/<%= node['wordpress']['vhost_domain'] %>-access_log common </VirtualHost>
WordPressディレクトリの設定変更
#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
リモートノードのhttpdとmysqldサービスを起動させています。「:restart」とすることも可能です。
また、Rubyで条件判定処理を書くことで「設定値が変更されていた場合のみrestartする」というようなことも可能ですが、今回の入門編は原則としてChefのDSLだけでRecipeを完結させることを到達目標としていますので、その部分の説明は割愛します。
最終回は、Recipeの仕上げ
AttributeやTemplateを活用できるようになると、Chefにおける構築の自由度が一気に上がりますので、ここをぜひマスターしてもらいたいと思います。
また、個人的に推奨はできかねますが、Chefからコマンドを実行させるように記述することも可能なので、「ここは、どうしてもコマンドでやらないといけない、ChefのResourceで書けない」という場合に利用することで「手順書をChefのCookbookとして記述する」ことの障壁が下がると思います。
次回は本連載の最終回となります。Recipeの仕上げの部分について解説していきます。
- WordPress環境構築におけるMySQLの設定とChef上達のポイント
- WordPressのダウンロード/配置とバーチャルホスト設定で見るChefの変数とAttributeの書き方の基本&Template活用
- Apache、PHP、MySQLパッケージのインストールで見るChefのRecipeの基本的な書き方
- WordPress構築で学ぶ、サーバー構築作業をChefのCookbookとして記述するためのポイント
- Knife-ZeroでCookbookの作成/実行/削除&git cloneコマンドでCookbookの取得
- エンタープライズでもInfrastructure as Code――Chef 12/Chef-Zero/Knife-Zeroの基礎知識とインストール
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について主な機能と特徴、使用技術、動作環境などを紹介。ハイパーバイザー型とコンテナー型の仮想化の違いも解説します。