Help us understand the problem. What is going on with this article?

chef-solo(knife)でMySQLサーバ5.6をインストールする 2014年度版

More than 5 years have passed since last update.

はじめに

chef-soloでVagrantなCentOSにMySQL5.6をインストールしようと思ったんですが、Berkshelfを使ったインストール手順がなかなか見つからなかったのでまとめました。

事前作業

以下の作業は完了済みとします。

  • CentOS6系のインストール
  • 対象サーバにchef-solo, またはローカルマシンにknifeインストール

Berkshelfのインストール

1からレシピを書くのは手間なので、先人の知恵を拝借するためberkshelfを使います。
Befkshelfはchefのレシピにおけるgemとかbundlerみたいなものと思ってください。

$ gem install berkshelf

Berksfile作成

Berkshelf経由でインストールするミドルウェアを指定するため、Berksfileを書きます。
chef実行ディレクトリに移動し、Berksfileを作成します。

$ vi Berksfile

mysqlレシピをBerkshelfから取得するための設定を記述します。

Berksfile
source "https://supermarket.getchef.com"

cookbook "mysql"

berkshelfのMySQLレシピを使う場合、MySQLの構成情報をnodeオブジェクトに記述します。

hogehoge_node.json
{
    "run_list": [
    "recipe[mysql::server]"
    ],
    "mysql":{
    "version":"5.6",
    "port":"3306",
    "server_root_password":"mysql0000",
    "remove_anonymous_users":true,
        "remove_test_database":true
    }
}

MySQLサーバをインストールする場合、run_list"recipe[mysql::server]"を追記します。(シングルクォーテーションではなくダブルで)
さらにインストールするバージョンなどをmysqlハッシュで指定します。

指定できるパラメータ

代表的なパラメータをまとめました

  • version MySQLのバージョン5.1~5.6が指定可能。5.7はCentOS6.5ではダメでした(2014/09現在)
  • port MySQLが使用するポートを指定します。
  • server_root_password MySQLのrootユーザーパスワード
  • remove_anonymous_users アノニマスユーザーを削除するか(true or false)
  • remove_test_database テストデータベースを削除するか(true or false) 他にも色々設定できますので、設定項目はこちらを参照してください。

chef実行

nodeオブジェクトができたらberksコマンドを実行してmysqlレシピを取得します。

$ berks  --path cookbooks

berksコマンドは--pathで指定したディレクトリを一度削除し、再作成した上でレシピをダウンロードします。
もし自分のレシピをcookbooks配下に作ってると、容赦なく全部削除されるので、事前にsite-cookbooksなどにリネームするか、--path指定のディレクトリを変更しましょう。

あとはchef-soloなりknifeなりお好きなように!

追記

recipeなしエラー

mysqlのレシピファイルが見つからないエラーが出る場合、.berkhelf/cookbooksmysql-6.0.4だけができて、mymsql-5.3.6がない可能性があります。
Berkfileにバージョン指定を追加しましょう。

cookbook "mysql", "~> 5.3.6"

You must supply a name when declaring a mysql_service resourceと言われたら、ノードファイルの記述方法が変わった可能性があります。
"service_name":"default"を追加しましょう。

    "mysql":{
    "service_name":"default",
    "version":"5.5",
    "port":"3306",
    "server_root_password":"mysql0000",
    "remove_anonymous_users":true,
        "remove_test_database":true
    }
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away