ztbuz@dev

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

Chef SoloでVagrant上にMySQLをインストールする方法

つぎはChef SoloでVagrant上にMySQLをインストールしてみます。 すこし手間取りましたが、思ったよりすんなりいきました。

MySQLをインストールする準備

クックブックを作成する

おなじみクックブックを作成します。 名前はmysqlにします。

$ knife cookbook create mysql -o site-cookbooks/

rpmファイルをダウンロードする

MySQLの公式サイトから、rpmファイルをダウンロードしてきます。

今回ダウンロードするものは以下のとおりです。

ダウンロードしたものは、site-cookbooks/mysql/files/default/下に配置します。

レシピを編集する

mysql-libsを削除する

MySQL Serverのインストールを試みると、以下のようなエラーが起きました。

ファイル /usr/share/mysql/czech/errmsg.sys (パッケージ MySQL-server-5.6.15-1.el6.x86_64 から) は、パッケージ mysql-libs-5.1.66-2.el6_3.x86_64 からのファイルと競合しています。

いろいろ調べてみると、どうやら標準で入っているmysql-libsと競合しているようです。

これを消しても、MySQL-shared-compat.rpmを入れれば問題ないようなので、サクッと消します。

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

package 'mysql-libs' do
  action :remove
end

/tmp/にrpmをつくる

つぎに、ダウンロードしたMySQLの各ファイルをノード側に配置します。 これはdefault.rbに以下のように書きます。

cookbook_file '/tmp/MySQL-server.rpm' do
  source 'MySQL-server-5.6.15-1.el6.x86_64.rpm'
end

cookbook_file '/tmp/MySQL-client.rpm' do
  source 'MySQL-client-5.6.15-1.el6.x86_64.rpm'
end

cookbook_file '/tmp/MySQL-devel.rpm' do
  source 'MySQL-devel-5.6.15-1.el6.x86_64.rpm'
end

cookbook_file '/tmp/MySQL-shared.rpm' do
  source 'MySQL-shared-5.6.15-1.el6.x86_64.rpm'
end

cookbook_file '/tmp/MySQL-shared-compat.rpm' do
  source 'MySQL-shared-compat-5.6.15-1.el6.x86_64.rpm'
end

インストールする

あとはrpmからインストールするだけです。 これもdefault.rbに書いていきます。

rpm_package 'MySQL-server' do
  source '/tmp/MySQL-server.rpm'
end

rpm_package 'MySQL-client' do
  source '/tmp/MySQL-client.rpm'
end

rpm_package 'MySQL-devel' do
  source '/tmp/MySQL-devel.rpm'
end

rpm_package 'MySQL-shared' do
  source '/tmp/MySQL-shared.rpm'
end

rpm_package 'MySQL-shared-compat' do
  source '/tmp/MySQL-shared-compat.rpm'
end

実行する

華麗に実行します。

$ knife solo cook sample

で、で、できたー!(できなかったらごめんなさい)

参考サイト

追記:2013/12/15

以下のように、もっとすっきりと書いてみました。

レシピ

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

package 'mysql-libs' do
  action :remove
end

node['mysql']['rpm'].each do |rpm|
  cookbook_file "/tmp/#{rpm}" do
    action :create
    source "#{rpm}"
  end

  rpm_package "#{rpm}" do
    action :install
    source "/tmp/#{rpm}"
  end
end

rpmの設定

$ vi site-cookbooks/mysql/attributes/default.rb

default['mysql']['rpm'] = [
  'MySQL-server-5.6.15-1.el6.x86_64.rpm',
  'MySQL-client-5.6.15-1.el6.x86_64.rpm',
  'MySQL-devel-5.6.15-1.el6.x86_64.rpm',
  'MySQL-shared-5.6.15-1.el6.x86_64.rpm',
  'MySQL-shared-compat-5.6.15-1.el6.x86_64.rpm'
]