VPSサポートトップご利用ガイド活用マニュアル構成管理ツールChefを使ってみようご利用ガイド構成管理ツールChefを使ってみよう関連記事ロードバランサーを使って1000Req/secを捌くWordPressクラスタを作るExcelからConoHaを使ってみようMovableTypeをインストールしてブログを作る目次Chefの利用形態chef-zeroのインストール使ってみようRecipe解説おわりにさて、今回のテーマは最近何かとAnsibleに話題をさらわれがちな、サーバーの構成管理ツールChefです。以前紹介させていただいたAnsibleと同じく、サーバーセットアップを自動化してくれます。ChefとAnsibleは利用方法が異なりますが、基本的な概念は似たようなものです。構成管理ツールに関する説明やAnsibleの概念は「構成管理ツールAnsibleを使ってみよう」の記事にて紹介していますので、本記事を読んで頂く前に一読していただくことをオススメします。Chefの利用方法を説明する前にAnsibleとChefの違いについて軽く触れておきます。個人的主観が含まれますが、ざっくり比較すると下記違いがあります。サーバー管理規模によらず利用形態は1つだけ。操作方法は簡潔だが大規模運用を行う場合は一工夫必要。サーバー管理規模に応じて複数の構成が提供されており、それぞれで利用方法が異なる。構成によって操作方法が異なり学習コストが高いが、小規模~大規模運用までカバーできる。比較してみましたが、個人的な意見としてはAnsibleの方が構成やサーバーを管理するための記述もシンプルなので、敷居が低く構成管理ツールの入門に適しているかと思います。chefを押すならばRubyの知識をCookbook作成に活かせる点です。Rubyでコードを書く感覚でCookbookを作成できるので、重複する設定値や処理を変数や関数にまとめたり、Cookbookの作成自体をRubyで自動化なんてことも可能です。Rubyが得意な方やこれからRubyを覚えようと思っている方にオススメなツールになります。automation.Chefの利用形態Chefの敷居が高い点は、サーバーの管理規模数に応じて利用形態が複数あり、形態毎に利用方法が異なるためです。始めは混乱するかもしれませんが、主に下記3パターンがあることを押さえておきましょう。Serverを利用したパターンchef-solo/chef-zeroを利用したパターンは小~中規模なサーバー構成管理に適しています。サーバー管理用端末と管理対象サーバーさえあれば良いので、Chefの入門編として良いでしょう。注意点として、chef-soloに関しては同等の機能がchef-zeroへ統合されたため、Chef公式サイトでいずれ廃止するとアナウンスされている点です。今後学習するならchef-solo後継のchef-zeroが良いでしょう。一方で、chef-serverは大規模なサーバー構成管理するための利用形態となります。最低でもサーバー管理用端末、Cookbook管理サーバー、管理対象サーバーが必要になり、設定方法もchef-solo/chef-zeroに比べ敷居が高いです。今回はchef入門編として掲載しますので、お手軽に始められるchef-zeroについて取り扱っていきます。chef-zeroのインストールまずはお手元のpcでchef-zeroが利用できるようにし、サーバー管理クライアントとして利用できるようにしましょう。インストールしておきましょう。knife-zero使ってみようまずはNode構成を管理するためのchefリポジトリを作成しましょう。以下のコマンドを実行してみてください。roleschef-repoというディレクトリが作成され、その中にNode構成を管理するためのディレクトリが作られます。ディレクトリ構造はそれぞれに意味がありますが、まずは手順通りに作業をすすめ、chef-zeroを動かす所から始めてみましょう。ファイルを作成しましょう。chefリポジトリのディレクトリ位置を知らせるためのものです。ディレクトリに作成しておきましょう。Cookbook/Recipeの作成ChefにはCookbookと言う仕組みがあります。定義した状態にしておくことができます。Recipe」と覚えるのが良いでしょう。DOCUMENTS書式や機能について、オフィシャルサイトにドキュメントはありますが、非常に多機能なのですべて読むのはなかなか大変です。サンプルを見て実行してもらう方が理解が早いと思います。以下の通り進めてみてください。ディレクトリ内で以下のコマンドを実行してみてください。格納するためのディレクトリ構造が作成されます。実際にRecipeを作成してみましょう。以下のサンプルを「chef-repo/cookbooks/nginx/recipes/default.rb」に保存してください。nginxを起動という手順で実行します。記述の違いの参考にしてください。パッケージのインストールを行います。ダウンロードと、IPアドレスをメモしておきましょう。64bit」を用いています。)VPSの準備ができたら、以下のコマンドを実行してみましょう。「xxx.xxx.xxx.xxx」の箇所はメモしたIPアドレスを入力してください。ディレクトリと[VPSホスト名].jsonファイルが作成されます。対して適用するか定義することができます。Nodeに定義してみましょう。以下のコマンドを実行してみてください。増やしていくことができます。適用によってセットアップされた箇所となります。セットアップが行われました。確認のため、http://[VPSのアドレス]にアクセスしてみましょう。nginxのデフォルトページが表示されると思います。一度同じコマンドを実行してみましょう。date)と表示され、緑色の文字が出力されないようになりました。冪等性(再実行しても同じ実行結果となる)を確保してくれるため、再実行の際に不要な変更処理を自動的にスキップしてくれます。以下のように変更し、MySQLも導入してみましょう。"service[iptables]"endRecipeを変更したら再度同じコマンドを実行してみてください。MySQLのインストール、起動、サービスの有効化が行われました。date)と表示され、何も処理されていませんね。充実させ、徐々にセットアップできる範囲を広げていくことができます。今回使用したRecipeにコメントを追加してみました。Recipeを作成される際にご参考ください。Rubyスクリプトで記述しています。記述することができます。リポジトリを有効化する。今回はNginxをインストールするため、epleリポジトリを有効化している。Chefが操作可能な範囲を記述。サービスの有効化、起動を行う。80番ポートへの接続許可が定義されているか確認する。80番ポートへの接続許可設定を追加する。end」の定義を実行する。サービスを再起動して設定の再読み込みを行う。:restartが定義されていないとRecipeの適用時に失敗するで注意。利用してみていかがだったでしょうか。今回の記事ではChefの基本的な動作を学んでいただくため、Recipeを手作業で作成していただきました。実のところサードパーティ製のRecipeも公開されているので、そちらを利用する方法も最後に補足しておきます。サードパーティ製Recipeを使用するメリットは、Recipe作成労力の削減に尽きるのですが、一方で別の課題が生じます。・サードパーティ製Recipeの使い方を覚えなければならない・最新OSの対応に間に合っていないケースがある。・サードパーティ製Recipeが対応している範囲内でしかセットアップできない。テスト環境を時間を掛けずに構築した場合などはサードパーティ製Recipeを使用してみるのも良いかもしれませんが、うまく動作しないなどのトラブル時に修正方法が分からず時間を費やしてしまうこともあります。作成する方法を身につけるよりも、Recipeに書かれている内容を理解して独自にRecipeを作成できるように頑張ってみましょう。作成に慣れてきたらサードパーティ製Recipeに手を伸ばし、そのまま使用したり、記述方法の参考にしたり、痒いところに手の届かない箇所を独自に改良したりしてみると良いかもしれません。問題は解決できましたか?はいいいえご回答ありがとうございます。送信ご回答受け付けました。ご協力ありがとうございました。