Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

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

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

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

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

Chef

http://learn.getchef.com/

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

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

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

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

Vagrant

https://www.vagrantup.com

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

http://berkshelf.com/

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を用いることが出来る。

awakia
検索とか推薦とかやってきたエンジニア。早稲田の山名研出身。大学院の頃、論文を書こうとしない僕を見かねた教授に、北京のMSRAに追放されるが3ヶ月後無事帰還。 大学を卒業後、エンジニアのブラックホールとの別名を持つGoogleに吸収されそうになるが1年2ヶ月後無事生還。 現在は、Wantedly(https://www.wantedly.com/ )の4番目のエージェントとして救出活動に専念。
http://awakia-n.hatenablog.com/
wantedly
「シゴトでココロオドル」ためのビジネスSNS「Wantedly」の開発・運営をしています。
https://wantedlyinc.com/ja/presentations
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away