LoginSignup
2

More than 5 years have passed since last update.

knife zeroでMySQLサーバ5.6をインストールする

Last updated at Posted at 2016-01-14

はじめに

BerkshelfのMySQL cookbookのバージョンを6系にしたら、下記のエラーが出るようになりました。

Chef::Exceptions::RecipeNotFound
--------------------------------
could not find recipe default for cookbook mysql

こちらについて調べてみたところ

As of version 6.0.0 the mysql cookbook is now a library-only cookbook. This means it no longer provides recipes. You'll want to create a wrapper cookbook that uses the mysql_client resource and use that recipe instead.

だそうで、どうやら6系からは自分でレシピを作る必要があるようです。

巷の話ではknife-soloオワコンらしいし、これを機にknife-zeroBerkshelfmysql cookbookを使ったMySQLサーバのインストールを行うことにしました。

knife zeroを入れる

こちらに書かれた手順に従って、knife-zeroをローカルマシンにインストールします。
Knife-ZeroでCookbookの作成/実行/削除&git cloneコマンドでCookbookの取得 (1/2)

入れたらbootstrapしますが、bootstrapするとrun_listが初期化されるので、nodesディレクトリはバックアップしておきましょう。

あと常に-zする人は、事前に.chef/knife.rbに下記の設定を追記しておくとよいです。

local_mode true

bootstrapを実行します。

$ knife zero bootstrap hoge --sudo

knife zeroでは実行結果でnodes/hoge.jsonを更新しますので、サーバのホスト名とbootstrapで指定するホスト名を揃えておく必要があります(hostsや.ssh/configに別名を書いていたりすると、ホスト名の不整合で正しく動かない)

ラッパーレシピ作成

Berkshelfsがインストールされ、cookbooksが最新化されている前提で進めます。
cookbooks/mysqlのリソースを呼び出すためのラッパーレシピを作成します。

$ knife cookbook create mysql-default -o site-cookbooks

レシピにmysqlの設定を記述します。

site-cookbooks/mysql-default/recipes/default.rb
#
# Cookbook Name:: mysql-default
# Recipe:: default
#
# Copyright 2016, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
mysql_service 'default' do
  port '3306'
  version '5.6'
  initial_root_password ''
  action [:create, :start]
end

mysql_client 'default' do
  action :create
end

metadata.rbにdepends 'mysql'を追加。

site-cookbooks/mysql-default/metadata.rb
name             'mysql-default'
maintainer       'YOUR_COMPANY_NAME'
maintainer_email 'YOUR_EMAIL'
license          'All rights reserved'
description      'Installs/Configures mysql-default'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version          '0.1.0'
depends          'mysql' # added

run_list追加

nodeのrun_listmysql-defaultを追加します。

$ knife node run_list add hoge mysql-default

converge実行

convergeを実行し、mysqlをインストールします。

$ knife zero converge "name:hoge" --sudo

hoge Starting Chef Client, version 12.6.0
hoge resolving cookbooks for run list: ["mysql", "base"]
hoge Synchronizing Cookbooks:
hoge   - mysql (6.1.2)
hoge   - base (0.1.0)
hoge   - yum-mysql-community (0.1.21)
hoge   - smf (2.2.7)
hoge   - yum (3.5.1)
hoge   - rbac (1.0.3)
hoge Compiling Cookbooks...
hoge Converging 22 resources
hoge Recipe: mysql::default
hoge   * mysql_service[default] action create
hoge   Recipe: yum-mysql-community::mysql56
hoge     * yum_repository[mysql56-community] action create
hoge       * template[/etc/yum.repos.d/mysql56-community.repo] action create
hoge         - create new file /etc/yum.repos.d/mysql56-community.repo
hoge         - update content in file /etc/yum.repos.d/mysql56-community.repo from none to f82f43
hoge         --- /etc/yum.repos.d/mysql56-community.repo    2016-01-08 09:46:22.358486843 +0000
hoge         +++ /etc/yum.repos.d/.mysql56-community.repo20160108-3460-13wm327  2016-01-08 09:46:22.358486843 +0000
hoge         @@ -1 +1,12 @@
hoge         +# This file was generated by Chef
hoge         +# Do NOT modify this file by hand.
hoge         +
hoge         +[mysql56-community]
hoge         +name=MySQL 5.6 Community Server
hoge         +baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/$releasever/$basearch/
hoge         +enabled=1
hoge         +failovermethod=priority
hoge         +gpgcheck=1
hoge         +gpgkey=https://raw.githubusercontent.com/chef-cookbooks/yum-mysql-community/master/files/default/mysql_pubkey.asc
hoge         +sslverify=true
hoge         - change mode from '' to '0644'
hoge       * execute[yum-makecache-mysql56-community] action run
hoge         - execute yum -q makecache --disablerepo=* --enablerepo=mysql56-community
hoge       * ruby_block[yum-cache-reload-mysql56-community] action create
hoge         - execute the ruby block yum-cache-reload-mysql56-community
hoge       * execute[yum-makecache-mysql56-community] action nothing (skipped due to action :nothing)
hoge       * ruby_block[yum-cache-reload-mysql56-community] action nothing (skipped due to action :nothing)
hoge     
hoge     * yum_package[default :create mysql-community-server] action install
hoge       - install version 5.6.28-2.el6 of package mysql-community-server
hoge     * service[default :create mysqld] action stop (up to date)
hoge     * service[default :create mysqld] action disable (up to date)
hoge     * group[default :create mysql] action create (up to date)
hoge     * user[default :create mysql] action create (up to date)
hoge     * file[default :create /etc/mysql/my.cnf] action delete (up to date)
hoge     * file[default :create /etc/my.cnf] action delete
hoge       - delete file /etc/my.cnf
hoge     * link[default :create /usr/share/my-default.cnf] action create
hoge       - create symlink at /usr/share/my-default.cnf to /etc/mysql-default/my.cnf
hoge     * directory[default :create /etc/mysql-default] action create
hoge       - create new directory /etc/mysql-default
hoge       - change mode from '' to '0750'
hoge       - change owner from '' to 'mysql'
hoge       - change group from '' to 'mysql'
hoge     * directory[default :create /etc/mysql-default/conf.d] action create
hoge       - create new directory /etc/mysql-default/conf.d
hoge       - change mode from '' to '0750'
hoge       - change owner from '' to 'mysql'
hoge       - change group from '' to 'mysql'
hoge     * directory[default :create /var/run/mysql-default] action create
hoge       - create new directory /var/run/mysql-default
hoge       - change mode from '' to '0755'
hoge       - change owner from '' to 'mysql'
hoge       - change group from '' to 'mysql'
hoge     * directory[default :create /var/log/mysql-default] action create
hoge       - create new directory /var/log/mysql-default
hoge       - change mode from '' to '0750'
hoge       - change owner from '' to 'mysql'
hoge       - change group from '' to 'mysql'
hoge     * directory[default :create /var/lib/mysql-default] action create
hoge       - create new directory /var/lib/mysql-default
hoge       - change mode from '' to '0750'
hoge       - change owner from '' to 'mysql'
hoge       - change group from '' to 'mysql'
hoge     * template[default :create /etc/mysql-default/my.cnf] action create
hoge       - create new file /etc/mysql-default/my.cnf
hoge       - update content in file /etc/mysql-default/my.cnf from none to b075a3
hoge       --- /etc/mysql-default/my.cnf    2016-01-08 09:47:07.116854806 +0000
hoge       +++ /etc/mysql-default/.my.cnf20160108-3460-1u4m2wd  2016-01-08 09:47:07.116854806 +0000
hoge       @@ -1 +1,23 @@
hoge       +# Chef generated my.cnf for instance mysql-default
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 中略 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
hoge Running handlers:
hoge Running handlers complete
hoge 
hoge Deprecated features used!
hoge   Cannot specify both default and name_property together on property path of resource yum_globalconfig. Only one (name_property) will be obeyed. In Chef 13, this will become an error. at 1 location:
hoge     - /var/chef/cache/cookbooks/yum/resources/globalconfig.rb:76:in `class_from_file'
hoge 
hoge Chef Client finished, 22/29 resources updated in 02 minutes 54 seconds

確認

finishedを確認し、ログインしてmysqlのバージョンを確認します。

$ mysql -u root --socket=/var/run/mysql-default/mysqld.sock --port=3306
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.28 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.28    |
+-----------+
1 row in set (0.00 sec)

レシピで指定したMySQLがインストールされていることが確認できます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2