Chef を使って CentOS で MySQL 5.5系のセットアップを行う

昨日の夜、@shimizukawa がこんなことを言っていた。

というわけで、この記事では chef を使って CentOSMySQL 5.5 系をセットアップする方法を紹介しよう。
この方法は CentOS 5.x 系でも 6.x 系でも使えるはずだ。

remi リポジトリを使おう

MySQL 5.5 のセットアップといっても、特に複雑なことはしない。Les RPM de Remi というサードパーティリポジトリを使う。
remi リポジトリは LAMP 環境の最新版を RedHatdistro. にバックポートすることを目的としているもので、
このリポジトリでは他にも PHP 5.4 系のパッケージを提供しているので、その用途でも使われることが多い。

MySQL 公式のものを使うべき、という主張もあるかと思うが、ここでは yum repos として提供されており、
簡単にインストールできる方法として remi リポジトリを設定することにしよう。


幸運なことに、community cookbooks の yum cookbook は remi リポジトリをサポートしている*1
そのため、次のように run_list を定義するだけで MySQL 5.5 をインストールすることができる。

  "run_list" : {
    "recipe[yum::remi]",
    "recipe[mysql::server]"
  }

余計なパッケージを入れないようにする

先ほども述べたが、remi リポジトリには PHP 5.4 を始めとするパッケージがいくつも含まれている。
MySQL 5.5 だけをインストールしたいにも関わらず、PHP がアップグレードされてしまう、というトラブルが起きる可能性もある。

そこで、必要なパッケージだけを使うよう includepkgs の設定をしよう。
幸運なことに、yum cookbook は includepkgs を attribute を介して設定できる*2
だから、solo.json などで次のように定義しておくとよいだろう。

  "yum" : {
    "remi" : {
      "includepkgs" : "compat-mysql* mysql*"
    }
  }

追記: 4/9(15:15): compat-mysql を追加
これで remi リポジトリからは MySQL 関連のパッケージ以外はダウンロードされなくなる。
ちなみに、使うケースは少ないが excludepkgs という設定もあるので、うまく組み合わせて使ってほしい。

Happy cooking!

*1:と言っても自分が pull request を送ったのですが…

*2:と言っても自分が pull request を送ったのですが…