ztbuz@dev

人生に絶望しているZが、それでも技術を身につけようと必死になるブログ

Vagrant上にChef Soloで環境を構築する方法

今、Vagrant上にChef Soloで諸々の環境を自動構築する方法について学んでいます。 今回は、まず簡単な命令を実行できるまでの流れについてまとめます。

Vagrantの初期化〜SSH接続まで

Vagrantを初期化する

まず、Vagrantを初期化してVagrantfileを生成します。 Boxは手元にあるという仮定です。

$ vagrant init [box name]

IPアドレスを設定する

Chef Solo(で使うknife-solo)では~/.ssh/configで設定したホストに対して実行します。 この準備として、まずVagrant側のIPアドレスを設定します。

$ vi Vagrantfile

# config.vm.network :private_network, ip: "192.168.33.10"
config.vm.network :private_network, ip: "192.168.33.10"

Vagrantを起動する

これはupするだけでござる。

$ vagrant up

SSH接続の準備をする

直接~/.ssh/configに記述してもよいのですが、Vagrantにはこれを一発で書いてくれる便利なコマンドがあるので、これを利用します。 upして仮想サーバを起動させないと下記コマンドは実行できないので注意します。

$ vagrant ssh-config —host [host] >> ~/.ssh/config

Chef Soloの準備〜実行まで

Chefをインストールする

とりあえずローカル側にChefをインストールします。

$ gem install chef

Chefの設定をする

以下のコマンドで設定します。 質問はすべてデフォルトでOKらしいです(無責任)。

$ knife configure

knife-soloをインストールする

Chef Soloをつかうにはknife-soloをインストールします。 これはgemでサクッとインストールできます。

$ gem install knife-solo

Chefリポジトリを作成する

Chefはリポジトリ単位で管理していきます。 まずこれを作成します。

$ knife solo init [repository name]

ノード側にChef Soloの準備をする

knife-soloは、ノード側(各サーバ)上でChef Soloを実行します。 なので、ノード側にChef Soloの実行環境を用意しなければなりません。

これは、以下のコマンドで簡単に実行できます。

$ knife solo prepare [host]

クックブックを作成する

サーバの設定はクックブックに書いていきます。 これは以下のコマンドで生成できます。

$ knife cookbook create [cookbook name] -o site-cookbook

実行する

自分好みに編集が完了したら、以下のコマンドで実行します。 おわり。

$ knife solo cook [host]

例:iptablesを無効化する

Vagrantはデフォルトでファイアウォールが設定されています。 なので、これを無効化しないとWebサーバを構築してもWebブラウザからアクセスできません。 今回はこれを例として書いてみます。

本番環境では役に立たないレシピですね。。。

クックブックを作成する

サクッと作成します。

$ knife cookbook create iptables -o site-cookbooks

レシピを編集する

レシピの書き方は、ググってみるといろいろあるので、そちらを参考にします。 今回はとりあえず中身だけ。

$ vi site-cookbooks/iptables/recipes/default.rb

service 'iptables' do
  action [:disable, :stop]
end 

run_listを編集する

レシピを編集したら、「iptablesを実行してくれ!」という指示を出さなければいけません。 これは以下のファイルのrun_listに書きます。

$ vi  nodes/[host].json 

{
  "run_list": [
    "iptables"
  ]
} 

実行する

あとは以下のコマンドで実行します。

$ knife solo cook [host]

だいぶはしょりましたが、以上で実行できます。 次はChef SoloでRailsの環境を自動構築する方法を書く……ために、今から勉強しますOnz