Chef で wp-cli を管理するためのレシピ ( WP-CLI Advent Calendar 2014 4日目 )

WP-CLIアドベントカレンダーの4日目です。
昨日は @tecking さんの「レンタルサーバに『WP-CLI』をサクっと入れるシェルスクリプト作ってみたよ」でした。
てわけで、今回の僕の記事はインフラ自動化フレームワーク Chef用の wp-cli レシピについて解説します。
Chef ってなんなの?って人はおググりください。
要するにインフラの構成管理を自動化するためのツールです。

wp-cli のインストールは通常公式サイトにもあるように github で公開されているリポジトリから wp-cli.phar を取ってきて実行権限を与え、パスが通っているところに置いてあげます。

$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
$ chmod +x wp-cli.phar
$ sudo mv wp-cli.phar /usr/local/bin/wp

ただ、これだと wp-cli のアップデートがあった時に再度手動でダウンロードして置き換えてあげないといけません。
めんどくせーですよね。
そんなわけで Chef の登場です。この github リポジトリを clone して適切にアップデートできるようにレシピを書いてあげましょう。

まず、僕の書いたレシピを置きますね。
これで /usr/share/wp-cli に wp-cli/builds を clone して、その中の phar/wp-cli.phar に実行権限を与え、/usr/local/bin/wp にシンボリックリンクを貼ってくれます。
すでに /usr/share/wp-cli に clone されている場合は git pull してきて最新の状態にしてくれるので、このレシピを走らせれば常に最新の wp-cli が使用できます。

attributes/wpcli.rb

default[:wpcli][:dir] = '/usr/share/wp-cli'
default[:wpcli][:link] = '/usr/local/bin/wp'

recipes/wpcli.rb

# install wp-cli
git node[:wpcli][:dir]  do
  repository "git://github.com/wp-cli/builds.git"
#  revision 'master'
end

bin = ::File.join(node[:wpcli][:dir], 'phar', 'wp-cli.phar')
file bin do
  mode '0755'
  action :create
  only_if { ::File.exists?(bin) }
end

link node[:wpcli][:link] do
  to bin
end

attributes/wpcli.rb では、wp-cli/builds リポジトリを保存しておく場所 ( default[:wpcli][:dir] )と、wp-cli.phar のシンボリックリンクを作成する先 ( default[:wpcli][:link] )が記述されています。

では、recipes/wpcli.rb を上から見てみましょう。

git リポジトリを更新しているのは 2-5 行目です。
chef の git リソースを使用しています。これは git のリモートリポジトリと同期を取り、更新を検出してくれるため execute リソースで git コマンドを実行するよりも便利で簡単です。
実際、2-5 行目の記述だけで /usr/share/wp-cli ( node[:wpcli][:dir] ) が無かった場合、リモートリポジトリ git://github.com/wp-cli/builds.git から git clone し、あった場合は git pull origin master してくれます。

次に /usr/share/wp-cli/phar/wp-cli.phar に対して実行権限 ( 0755 )を設定しているのが 7-12 行目です。
7行目では、ファイルのパスを組み立て、8-12行目で chef の file リソースにより、ファイルが有った場合はパーミションを 0755 に変更しています。

最後に /usr/share/wp-cli/phar/wp-cli.phar のシンボリックリンクとして /usr/local/bin/wp ( node[:wpcli][:link] ) を作成しているのが 14-16 行目です。

これだけでいつでも最新版の wp-cli が使えますね。

それでは、良い wp-cli ライフを!

というわけで WP-CLI Advent Calendar 2014 4日目を終わります。
金曜日の日直は @shinichiN さんです、よろしくー

コメントを残す

メールアドレスが公開されることはありません。