Apache、PHP、MySQLパッケージのインストールで見るChefのRecipeの基本的な書き方:サーバー管理者のためのChef超入門(4)(2/2 ページ)
エンタープライズ向け機能が充実してきたChefを使って高速かつ精度の高いサーバーインフラを構築/管理する方法について解説する連載。今回は、外部Cookbookを利用したリポジトリ設定や、yumによってApache、PHP、MySQLパッケージをインストールするRecipeの書き方と実行の仕方などについて解説します。
【2】Apache、PHP、MySQLパッケージをインストールするRecipeを書いてみよう
Packeageリソースを使用して、ディストリビューションのパッケージ管理システムを操作してインストールします。
ここから、ついに自分でChefのCookbookを作成していく作業に入ります。以下の流れで作業を行います。
- Cookbookのひな型を作成する
- パッケージをインストールするRecipeを書く
- Cookbookを実行してノードにパッケージをインストールする
- 021#
1.Cookbookのひな型作成
knifeコマンドを使用してCookbookのひな型を作成します。
$ sudo knife cookbook create wordpress01 -o cookbooks ** Creating cookbook wordpress01 in /home/******/chef-repo/cookbooks ** Creating README for cookbook: wordpress01 ** Creating CHANGELOG for cookbook: wordpress01 ** Creating metadata for cookbook: wordpress01
前回、『Cookbookとは「インフラをコード化してあるべき状態を記述したChefのファイル群」』と説明しました。Cookbookは以下図のように複数のファイルから構成されています。Knifeコマンドを用いることで、図のようなファイル・ディレクトリ構造のモトを簡単に作成できます。
2.Recipeを書く
RecipeはCookbookのうち実行内容を記載するファイルです。今回はAttributeやTemplate/Fileは使用しません。Recipeに記述した内容をそのまま実行するRecipeを書きます。
編集するファイルは「cookbook/wordpress01/recipes/default.rb」です。Recipeに実行させたい内容を記述するとき、「Resource」と呼ばれる形式(リソース)に従って記述していきます。今回は「Package」リソースを用いてパッケージ管理システム(今回はCentOSを使用していますので「yum」になります)によってパッケージをインストールするRecipeを書きます。
他のResourceの記述方法については公式ドキュメントを参考にしてみてください。
package ['httpd’] do action :install end package ['httpd-devel'] do action :install end package ['mysql'] do action :install end package ['mysql-server'] do action :install end package ['mysql-devel'] do action :install end package ['php'] do action :install end
PackageリソースをPackageの数だけ記載して、1個ずつパッケージをインストールしていくRecipeになっています。
分かりやすいですがパッケージの数が増えれば増えるほど冗長になっていくため、実際にChefを活用していく段階では、このような書き方は推奨されません。しかし、ここで覚えておいていただきたいのは「Chefというのは実はこのような単純なものの組み合わせでできている」ということです。Rubyだから、プログラムだからと身構える必要はないのです。実行する内容の集合体です。
ここから始めて、だんだんと条件分岐や繰り返しなどのプログラマブルな処理が必要になってくるはずですので、そこでRubyをRecipeに盛り込んでいけばいいのです。
package ['httpd', 'httpd-devel', 'mysql', 'mysql-server', 'mysql-devel', 'php', ‘php-mysql’] do action :install end
2015年6月25日追記
記事公開時にPackageをインストールするRecipeの書き方の部分で、php-mysqlが抜けておりました。上記の通り訂正させていただきます。
Packageの後にインストールしたいパッケージ名をカンマ区切りで列挙していきます。これで先ほど18行あったRecipeは3行になりました。
さらにRubyのループを使って「記載された分だけPackageインストールを実行する繰り返し処理の記述例」もありますが、今回は割愛します。
3.Cookbookを実行
実際に作成したRecipe/Cookbookを実行してみます。
$ sudo knife node run_list add node01 'recipe[wordpress01]' node01: run_list: recipe[wordpress01] $ sudo bundle exec knife zero chef_client 'name:node01' -x <ユーザー名> -P <パスワード> --sudo node01 Starting Chef Client, version 12.3.0 node01 resolving cookbooks for run list: ["wordpress01"] <<<中略>>> node01 * yum_package[httpd, httpd-devel, mysql, mysql-server, mysql-devel, php] action install node01 - install version 2.2.15-39.el6.centos of package httpd node01 - install version 2.2.15-39.el6.centos of package httpd-devel node01 - install version 5.5.43-1.el6.remi of package mysql node01 - install version 5.5.43-1.el6.remi of package mysql-server node01 - install version 5.5.43-1.el6.remi of package mysql-devel node01 - install version 5.4.40-1.el6.remi of package php node01 node01 Running handlers: node01 Running handlers complete node01 Chef Client finished, **/** resources updated in **.******* seconds
上記のように表示されればパッケージのインストールは完了です。MySQLとPHPについては、RemiリポジトリからCentOS標準よりも新しいバージョンのパッケージをインストールしていることが確認できると思います。
次回はAttributesやTemplatesを活用したChefならではのメリット
今回はChefのRecipeの本当に基本的な部分についてだけ触れました。ここからさまざまなResourceを使い分け、Rubyによる動的な記述によってできることはどんどん増えていきます。
始めの一歩が大事です。だんだんとChefに慣れていって、実務に活用されるよう望みます。次回はAttributesやTemplatesを活用した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について主な機能と特徴、使用技術、動作環境などを紹介。ハイパーバイザー型とコンテナー型の仮想化の違いも解説します。