WP-CLI 0.24 でリモートサーバーに対してコマンドを実行できるようになりましたよ!

先日、WP-CLI 0.24 がリリースされました。

このリリースでは、wp help の改善やWordPress本体との互換性の向上、いくつかの新機能など、とても多くの修正が行われたビッグリリースとなりました。

その中でも特に熱い機能、SSH及びエイリアスについてご紹介します。

WP-CLIをSSH経由で実行する

従来の WP-CLI では、コマンドを実行したいサーバーに SSH でログインし、wp-config.php があるディレクトリに移動してからコマンドを実行する必要がありました。

管理しているサイトが複数ある場合には、これらの操作を繰り返す必要があり、どうしても煩雑になってしまいます。

WP-CLI の最新版では、--ssh というコマンドラインオプションが追加され、リモートサーバーにWP-CLIコマンド経由で SSH 接続を行い、wp コマンドを実行できるようになりました。

$ wp help

  (略)

  --ssh=<ssh>
      Perform operation against a remote server over SSH.

このコマンドラインオプションを使用するとリモートサーバー上で WP-CLI コマンドを実行することができます。

(ただしリモートサーバー上にも WP-CLI がインストールされている必要があります。)

$ wp plugin list --ssh=user@example.com:22/var/www/wordpress
+---------------------------------------+----------+--------+--------------+
| name                                  | status   | update | version      |
+---------------------------------------+----------+--------+--------------+
| automatic-updater                     | active   | none   | 1.0.2        |
| akismet                               | active   | none   | 3.1.11       |

SSHに必要な情報は以下のフォーマットで記述してください。

--ssh=<SSHユーザー名>@<ホスト名>:<ポート><ドキュメントルートの絶対パス>

 エイリアスを使用する

上述の --ssh を使用する方法はそれだけでも便利なんですが、毎回 SSH に必要な情報を記述するのは大変です。

そこで、エイリアスという機能を使ってもっと楽をしてみましょう。

まず、 WP-CLI の設定ファイル(~/.wp-cli/config.yml)に以下のように記述してください。

@blog:
  ssh: user@example.com:22/var/www/wordpress

ここで記述されたのがエイリアスと呼ばれるもので、こう記述しておけば次回以降は以下のようにコマンドを実行するだけで、該当サーバー上で WP-CLI コマンドが実行されます。

wp @blog plugin list

もちろん複数のエイリアスを記述することもできます。

@blog1:
  ssh: user@example.com:22/var/www/wordpress
@blog2:
  ssh: user@example.org:22/var/www/wordpress

さらに以下のように一つのエイリアスに複数のエイリアスを登録することも可能です。

@blog1:
  ssh: user@example.com:22/var/www/wordpress
@blog2:
  ssh: user@example.org:22/var/www/wordpress
@both:
  - @blog1
  - @blog2

この場合、以下のコマンド一発で二つのサーバー上のWordPressが最新版にアップデートされます。

$ wp @both core update
Success: WordPress is up to date.
Success: WordPress is up to date.

 WP-CLI チームにジョインしました!

WP-CLI は、僕がお手伝いしているデジタルキューブの AMIMOTO や、VCCW が内蔵しているまさにコアとも言えるプロジェクトで、この WP-CLI プロジェクトなしではこれらのプロダクトのメンテナンスにかかるコストは膨大になったと思われます。

また、WP-CLI のリードディベロッパーの Daniel Bachhuber 氏は僕にとっての憧れの存在でして、そんな彼から先日 WP-CLI チームへの招待が届きました。

そんなわけでまだまだ新米のひよっこですが、WP-CLI チームにジョインすることになりました!