Chefでの外部cookbookによるmysql環境の構築

外部cookbookを使ってmysqlのインストールから、DBの作成までを行います。

database cookbookの取得

  • librarian-chefをインストール
gem install librarian-chef

  • Cheffileを作成し、設定追加
librarian-chef init

してCheffileを作成後、

cookbook 'database'

を追記

  • database cookbookのインストール
librarian-chef install

関連するcookbookもインストールされる。

mysql cookbookの取得  

git clone https://github.com/opscode-cookbooks/mysql.git

設定

mysqlのインストールはjsonファイルに下記を追加する。

{
  "mysql": {
    "version":"5.6"
    "server_root_password": "",
  },
  "run_list": [
    "recipe[mysql::server]"
    "recipe[mysql::database]"
    "recipe[mysql-db]"
  ]
}

データベースを作成したいときは、recipeファイルにmysql::databaseをインクルードする。以下にコード例を示す。

# database::mysqlレシピを使用する
include_recipe "database::mysql"

# データベース接続に使用するアカウント情報を定義する
# パスワードはJSONファイル内に記述されたものを使用する
connection_info = ({
  :host => "localhost",
  :username => "root",
  :password => ""
})

# 「testdb」データベースを作成する
mysql_database 'testdb' do
  connection connection_info
  action :create
end

# 「testuser」ユーザーを作成しそのアクセス権とパスワードを設定する
mysql_database_user 'testuser' do
  connection connection_info
  password 'testpassword'
  database_name 'testdb'
  host '%'
  privileges [:all]
  action :grant
end