Chefの勉強をしていて、CentOS 6.5 上にNginxのインストールと起動する手順メモ。
仮想サーバーの準備
まず、CentOSのイメージがない場合は追加
1 2 | # Vagrantの用意 $ vagrant box add opscode-centos-6.5 http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-6.5_chef-provisionerless.box |
作業ディレクトリの作成
1 2 3 | # ホストOSの適当なディレクトリに移動して $ mkdir nginx-exmaple $ cd nginx-exmaple |
Vagrantの起動
1 2 3 | # Vagrantの初期化 $ vagrant init opscode-centos-6.5 $ vagrant up |
SSHで入れるように~/.ssh/confingに追記
1 2 | # SSHの設定 $ vagrant ssh-config --host nginx-example >> ~/.ssh/config |
ブラウザからアクセスできるようにVagrantfileに設定追加
1 2 3 4 5 | # Vagrantのネットワーク設定 # Vagrantfile config.vm.box = "opscode-centos-6.5" config.vm.network :private_network, ip:"192.168.50.10" # ← 追記 |
Vagrantのリロード
1 2 3 | # Vagrantfileを更新したのでリロード $ vagrant halt $ vagrant up |
Knife SoloでChef環境の準備
knife-soloは、ほかのgemのインストール有無によりオプションが変化する。 クックブックの依存関係を管理するBerkshelfというツールも関係するのでインストールしておく。
1 2 3 | # ホストOSだけでOK $ gem install knife-solo $ gem install berkshelf |
キッチンの作成
1 2 | # キッチン(Chefレポジトリの作成) $ knife solo init . |
1 2 | # ゲストOSにChefの準備 $ knife solo prepare nginx-example |
レシピの作成
nginx用のクックブックとレシピの作成
1 2 3 4 5 6 7 8 9 10 11 12 13 | $ knife cookbook create nginx -o site-cookbooks # site-cookbooks/nginx/recipes include_recipe "yum-epel" package "nginx" do action :install end service "nginx" do action [ :enable, :start ] supports :status => true, :restart => true, :reload => true end |
第三者のクックブックを使用するため、Berksfileの編集
1 2 | # Berksfile cookbook 'yum-epel' # ← 追記 |
Nodeオブジェクトの編集
レシピを反映させるためにNodeオブジェクトに上記のレシピを追記する
1 2 3 4 5 6 7 8 9 10 | # nodes/nginx-example.json { "run_list": [ "recipe[yum-epel]", # ← 追記 "recipe[nginx]" # ← 追記 ], "automatic": { "ipaddress": "nginx-example" } } |
Chefの実行
ノードにレシピの反映
1 | $ knife solo cook nginx-example |
ブラウザでVagrantfileで指定した 192.168.50.10
と入力して、下記のように Nginx の初期画面がでていれば成功。
参考
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)
入門Chef Solo - Infrastructure as Code
サーバ/インフラ徹底攻略 (WEB+DB PRESS plus)