Vagrant + Chefの導入 vol.2
入門Chef Solo - Infrastructure as Code
- 作者: 伊藤直也
- 出版社/メーカー: 伊藤直也
- 発売日: 2013/03/11
- メディア: Kindle版
- 購入: 16人 クリック: 1,027回
- この商品を含むブログ (17件) を見る
Rubyのインストール
ChefはRubyで動作するプログラムなので、Rubyをインストールしておく必要があります。Windows環境へのインストール方法はこちらを参照してください。バージョンについては、自分は1.9.3-p484を使っていますが、最新は1.9.3-p545なのでそちらの方が良いかと思います。
また、DevKitというものも必要となりますので、そちらもインストールしておきます。インストール方法はこちらを参照してください。
Chefのインストール
続いてはChefのインストールですが、まずは周辺プロダクトを整理してみます。
プロダクト名 | 概要 |
---|---|
chef-solo | chefに同梱されている単体で動作するプロビジョニングツール*1 |
knife-solo | chefのcookbookを作るためのツール |
Berkshelf | chefで使うcookbookを管理するgem |
Chefはクライアント・サーバによる集中管理方式でサーバの構成管理を行えますが、スタンドアロン方式も可能です。chef-soloはそのスタンドアロン方式用のツールです。次にknife-soloはknifeのプラグインでchef-soloで利用するレシピの雛形を作成したり、リモートでレシピを実行できるようにするためのサブコマンドが使えるようになります。Berkshelfはcookbookの依存関係を管理するツールらしいですが、ちょっとピンときません。ここは追々調べてみようと思います。
コマンドプロンプトで以下のコマンドを実行します。
gem install chef gem install knife-solo
cookbookの作成
インストールが完了したら、vagrant initしたディレクトリに移動してknife soloを実行します。前回の記事の例だとC:\Users\m-namiki\Documents\20_vagrant\10_sandboxになります。
cd C:\Users\m-namiki\Documents\20_vagrant\10_sandbox knife solo init chef-repo
実行が完了するとchef-repoというディレクトリが作成され、その下の階層は以下のようになります。
C:\Users\m-namiki\Documents\20_vagrant\10_sandbox>tree chef-repo C:\USERS\M-NAMIKI\DOCUMENTS\20_VAGRANT\10_SANDBOX\CHEF-REPO ├─.chef ├─cookbooks ├─data_bags ├─environments ├─nodes ├─roles └─site-cookbooks
次に簡単なレシピを書いてみます。chef-repoに移動して、knife cookbookを実行します。
cd chef-repo knife cookbook create sandbox -o site-cookbooks
実行が完了するとsite-cookbooks以下にsandboxというディレクトリが作成され、その中にも色々なディレクトリやファイルが作成されます。
C:\Users\m-namiki\Documents\20_vagrant\10_sandbox\chef-repo>tree site-cookbooks C:\USERS\M-NAMIKI\DOCUMENTS\20_VAGRANT\10_sandbox\CHEF-REPO\SITE-COOKBOOKS └─sandbox ├─attributes ├─definitions ├─files │ └─default ├─libraries ├─providers ├─recipes ├─resources └─templates └─default
recipes\default.rbというファイルがインストールするパッケージなどを記述するファイルです。まずは簡単にiptablesを停止・無効化するレシピを書いてみます。
# # Cookbook Name:: sandbox # Recipe:: default # # Copyright 2014, YOUR_COMPANY_NAME # # All rights reserved - Do Not Redistribute # service "iptables" do action [:disable, :stop] end log "done iptables stop."
レシピの書き方等については伊藤直也さん(@naoya)の入門Chef Solo - Infrastructure as Codeを筆頭に、ググればたくさん出てくるのでここでは割愛します。そしてようやく次は実行ですが、残念、m-namikiは力尽きてしまった!ので、続きはまた今度。
*1:サーバー構築・管理を自動化するツール