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