WordPress構築で学ぶ、サーバー構築作業をChefのCookbookとして記述するためのポイント:サーバー管理者のためのChef超入門(3)(2/2 ページ)
エンタープライズ向け機能が充実してきたChefを使って高速かつ精度の高いサーバーインフラを構築/管理する方法について解説する連載。今回は、WordPressを手動でインストール手順や、Cookbookとは何か、Recipeとは何か、WordPressサーバー構築を例としたCookbook作成の進め方などについて解説します。
Cookbookとは、Recipeとは
Cookbookとは「インフラをコード化してあるべき状態を記述したChefのファイル群」です。RecipeはCookbookの一部にすぎません。CookbookはRecipeを含む複数のファイルから構成されています。
Recipe
Chefによってインフラをどのように構成するかを記述するファイルがRecipeです。RecipeはRubyを知らなくても書けます(※)。知るべきことはRecipeの書き方です。Recipeは後述するResourceの集合体で構成されていますので、まずはResourceを記述し実行させられるようになりましょう。
※とはいえ、条件分岐や繰り返し処理などを実現するにはRubyの知識が必要になってきますので、次第にChefで用いるRubyの記法についても慣れていきましょう(参考記事「若手エンジニア/初心者のためのRuby 2.1入門(2):Ruby 2.1の基本構文/基本文法まとめ&Pryの使い方」)。
Resource
Recipeに実行させたい内容を記述するとき、Resourceと呼ばれる形式に従って記述していきます。リソースタイプには、下記のようにいろいろな種類があります。
- ディストリビューションごとの違いを吸収してくれるResource
- ディストリビューション固有のResource
- Linuxコマンドを記述/実行するResource
- 静的ファイル(file)、テンプレート(template)を操作するResource
Resourceの種類や書き方については公式ドキュメントが参考になります。
Attribute
Attributeとは、RecipeやTemplateに定義できる変数です。例えば、WordPressであればバーチャルホストのドメイン名やWordPressのバージョン別ファイルなどは実行するたびに変化する内容です。これらはCookbookの実行時に値を指定して実行させることもできますが、「attributes」ディレクトリの「default.rb」ファイルにデフォルト値を記載しておくと、実行時に特に指定しない場合は、こちらが採用されます。
なお公開されているCookbookの中には、実行時に必ずAttributeを定義しないといけないものもあります。
Template/File
TemplateとFileは両方ともRecipeから呼び出されて利用されるファイルですが、Templateは中にAttributeを定義できるので、「httpd.conf」のような「config」ファイルをヒアドキュメントとして流し込みたい場合などに利用します。
一方で、Fileは完全に静的ファイルとしてしか扱わないものを設置します。例えば、リモートノードで実行させたい(しかし毎回インターネットから取得させる必要はない)RPMファイルなどはここに設置します。
Cookbook作成の進め方
上記内容を踏まえ、今回のお題である「WordPressサーバー構築」をCookbook化する方針を以下の通りとします。
【1】リポジトリ設定→外部Cookbookを利用
外部CookbookとしてEPELやRemiのインストールができるCookbookが公開されているので、そちらを使用します。
【2】Apache、PHP、MySQLのインストール→Resourceで定義
Packeageリソースを使用して、ディストリビューションのパッケージ管理システムを操作してインストールします。
【3】WordPressのダウンロードと解凍→Resourceで定義
URLを基にWordPressのソースファイルをダウンロードして所定の位置に配置する一連の処理を、scriptリソースを使用して実行します。どうしても適合するリソースがなくコマンドとして実行したい場合はscriptリソースが有効です。
【4】バーチャルホスト設定→Templateを使用
httpd.confをTemplateとして用意しておき、実行のたびに変化する部分をattributeとして定義しておきます。実行時は指定したattribute値に置換されたhttpd.confファイルをヒアドキュメントとしてリモートノードに配置します。
【5】WordPress用MySQL設定→Templateを使用
MySQL用のSQLファイルをTemplateとして用意しておき、実行のたびに変化する部分をAttributeとして定義しておきます。実行時は指定したAttribute値に置換されたSQLファイルをリモートノードのMySQLサーバーに対して実行します。
今回のまとめ
今回のポイントをまとめると以下のようになります。
- 「ChefはRuby」と難しく考えないこと。公式ドキュメントやインターネット上の情報で、普段コードを書いていないサーバー管理者でもRecipeを記述できる
- ResourceにできることはResourceに任せる、できなければコマンドとして実行させる
- configファイルの書き換えはTemplateを使って流し込むと簡単
Chefは独特の用語が多いことや、複数ファイルに跨がって構成されていること、「Rubyだ」というイメージが強過ぎることなどから「難しい」と考えられがちなのですが、一度仕組みを理解してしまえば、非常に理にかなった構造をしていることが分かると思います。
次回以降では実際にCookbookの作成を通じてChefの理解を深めていこうと思います。
- 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について主な機能と特徴、使用技術、動作環境などを紹介。ハイパーバイザー型とコンテナー型の仮想化の違いも解説します。