Chefでvagrantにサーバー構築①(インストール編)
Chef
Chefは、RubyのDSLで記述されたプロビジョニングツールです。
流れ
今回構築する環境
OS : centos7
nginx
mysql
rbenv
Vagrant、Chefのインストール
Vagrant
まずはvagrantの設定をします。
vagrantの設定はこちらを参考にしてください
ここからの作業はVagranfileがあるディレクトリで行います。
Chef
次に、ChefのChefをダウンロード、インストールです
公式ページよりChefをダウンロード、インストール https://downloads.chef.io/chef-dk/
gemで入れるよりインストーラーから入れたほうがいい模様 http://qiita.com/hamichamp/items/d3ca7c365353285a564b
$ sudo chef -v Chef Development Kit Version: 0.10.0 chef-client version: 12.5.1 berks version: 4.0.1 kitchen version: 1.4.2
knife-soloをインストール
$ sudo chef gem install knife-solo
以下のコマンドで初期ディレクトリを設置します
$ knife solo init .
Berkshelfのインストール
$ gem install berkshelf
Berksfileを作成して以下のように書いてください
#Berksfile source "https://api.berkshelf.com" cookbook 'ruby_build' cookbook 'ruby_rbenv', :git => 'https://github.com/chef-rbenv/chef-rbenv.git' cookbook 'nginx' cookbook 'mysql', '~> 5.6' cookbook 'selinux'
以下のコマンドでBerksfileの内容を適用
$ berks vendor cookbooks
そして以下のようにVagrantfileに設定ファイルの場所を書きます
#Vagrantfile config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "./cookbooks" chef.add_recipe "ruby_build" chef.add_recipe "ruby_rbenv::system" chef.add_recipe "nginx" chef.add_recipe "mysql::server" chef.add_recipe "mysql::client" chef.add_recipe "selinux::disabled" end
以下のコマンドを入力したらvagrantが立ち上がります。
$ vagrant up —provision
これでインストールは終わりです。次にすべきは自分でレシピを追加してnginxの設定、Rubyのインストール、unicornとrailsのインストール、MySQLの設定をします。
ハマったところ
mysqlのインストールにかなりハマりました。
vagrantにちゃんと転送されてるのに
could not find recipe default for cookbook mysql
とエラーを吐かれました。
chefのリファレンスによると解決するにはRedHat系のOSだとselinuxを追加してdisabledにしなければいけないみたいです。
Requirements
・ Chef 11 or higher
・ Ruby 1.9 or higher (preferably from the Chef full-stack installer)
・ Network accessible package repositories
・ 'recipe[selinux::disabled]' on RHEL platforms