28
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

とりあえずChef始めようという人が知っておくべきツール概要

Last updated at Posted at 2014-09-28

Chefでインフラ構成をするために必要なツールの概念のみをまとめました。

ここで出てくるキーワード:

  • chef
  • vagrant
  • barkshelf
  • serverspec
  • test-kitchen

(ちなみにこれら全てgem install xxxで入れられます)

どう使うかというより、よく出てくるこいつら何やるんだっけ?みたいなところを書いたつもりで、とりあえず細かいことを気にせずに、まずはローカルでインフラを構築してテストする環境を整えてしまいたい人向けです。
実際にどういうふうに運用するのか気になったら、以下のページが参考になると思います。

Chef

"Infrastructure as Code"を牽引しているChef先生。インフラの設定も全てソースコードでやって、gitで管理できるようにしましょうという話。記述方法がRubyなので、他の独自言語で設定するツールより愛されている気がする。
インフラの設定なんて、シェルスクリプトで書けばいいんじゃないのと思うかもしれないが、シェルスクリプトより優れている点として以下の様な点がパッとあげられる。

  • OS間の違いを吸収。Javascriptで言うjQuery的役割
  • 何度やっても同じ結果になるという冪等性を保証した設計
  • 他人が書いたものを再利用できるエコシステムの存在
  • 複数台サーバーがあった時、サーバーノードごとの設定も自然に記述できる

(注: ただし、最近Dockerが出てきてImageをそのまま配布する流れになってきたことにより、シェルスクリプトに比べての優位性は一時期より下がってきている)

Chefは、recipeとかknifeとかchef-soloとか概念が色々出てきて勉強することが付きないが、習うより慣れろ。ここで立ち止まらずに、さっさと、chefでのインフラを設定を試してテストする環境を整えてしまおう。

Vagrant

chefでの環境構築を手早く試す、テストするためによく用いられるツール。

Vagrantの説明は、以下のページが導入として良かった。
http://knowledge.sakura.ad.jp/tech/1552/

自分でも簡単に説明しておくと、Vagrantは、様々なOS/設定の(仮想)マシンをコマンドで簡単にセットアップできるというのがメリット。つまり、Vagrantはインターフェース的な役割で、仮想マシンを作るソフトウェアではない。仮想化ソフトとしてはデフォルトでVirtual Boxを使い、VMWareにすることなどもできる。
仮想にカッコを付けたのは、実は仮想マシンだけではなく、Amazon EC2やDegital Ocean等の実マシンや、更にはDockerコンテナも立ち上げることができる。ここまでくれば、インターフェースという意味もわかってくるはず。

Vagrantの使い方の基礎だけ書いておくと、

vagrant init (hogehoge)

でVagrantfileという設定ファイルが作られ、

vagrant up

でその設定に基づく仮想マシンが立ち上がるという仕組み。

vagrant ssh

でその中に入っていろんなことをしたり、テストをすることもできる。

Berkshelf

Chefのcookbook版Gemfileのような存在。
複数のCookbookを、バージョンごとの依存関係を解決しつつインストールすることが出来る。

berks init .

されているberks管理下のディレクトリ以下でBerksfileを作り、ここに使いたいCookbookを書いて、

berks install

すれば必要なCookbookがインストールされる。

Serverspec

http://serverspec.org/
https://github.com/serverspec/serverspec

Serverマシンの状態をrspecのようにテストすることが出来るTestツール。
chefspecminitest-chef-handlerと違い、テストがChefに依存しているわけではなく、純粋にサーバーの状態をテストしているため、Chefだけでなく、puppetやシェルスクリプトで構成したものでもテストを行うことが出来る。
RedHat,Debian,FedoraなどUnix/Linux系のOSはだいたい網羅しており、同じspecを書いただけで複数のOSのテストに対応できる。

Test Kitchen

http://kitchen.ci/
https://github.com/test-kitchen/test-kitchen

サーバーのテストをする時の統合プラットフォームで、kitchenという名前のコマンドを提供している。すごくわかりやすい命名。
提供している機能はいろいろあるがメインは以下の2つ。

  • 複数プラットフォーム、複数サーバー設定のコンビネーションの構築とそのテストを簡単に行える
  • テストをクリーンなOSの状態から始めたり、以前のテストの状態から始めたりを自由に行える

あとは、作成したサーバーに入れる機能などもあり、デバッグ時に助かる。
なお、テストとしてServerspecを用いることが出来る。

28
28
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?