DesignAssembler

備忘録に近い

Chefでvagrantにサーバー構築①(インストール編)

Chef

Chefは、RubyDSLで記述されたプロビジョニングツールです。

流れ

  1. Chefの構築ファイルをMac上で作成
  2. vagrantに転送
  3. vagrantでchefを実行

今回構築する環境

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のインストール、unicornrailsのインストール、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

supermarket.chef.io

参考

qiita.com

chefじゃないけどvagrantからawsを操作できるらしい

qiita.com