無印吉澤

Site Reliability Engineering(SRE)、ソフトウェア開発、クラウドコンピューティングなどについて、吉澤が調べたり試したことを書いていくブログです。

embulk-filter-insert 1.1.0リリース(Liquidで環境変数を挿入できるようになりました)

Embulkが0.6系から0.7系にメジャーバージョンアップされて、色々と機能が増えたのに加えて、APIにも変更が加わったようです。

Twitterで↑のお達しがあったのを見かけて、過去に作ったembulk-filter-insertプラグインが動かなくなっていないか、一応確認してみました。何も変更しなくてもEmbulk 0.7系で動きました……。おそらく、大したことしてないプラグインだからだと思います。

プラグインのmigrate手順

とはいえ、一応念のため、リリースノートにあるembulk migrateサブコマンドを実行しておきました。

happyturn% embulk selfupdate
2015-08-19 23:28:14.239 +0900: Embulk v0.6.18
Checking the latest version...
Found new version 0.7.1.
Downloading https://dl.bintray.com/embulk/maven/embulk-0.7.1.jar ...
Updated to 0.7.1.
happyturn% embulk migrate embulk-filter-insert
2015-08-19 23:50:55.789 +0900: Embulk v0.7.1
Detected Ruby plugin for unknown Embulk version...
  Created /.ruby-version
  Modified /embulk-filter-insert.gemspec
Done. Please check modifieid files.

embulk migrateサブコマンドで変更があったのは、上記の2ファイルだけでした。非互換のAPIは特に使っていなかったみたいです。.ruby-versionはjruby-9.0.0.0の指定、gemspecは以下の行が追加されただけでした。

   spec.add_development_dependency 'embulk', ['~> 0.7.1']

あとは、以下の手順でRubyGems.orgに公開。

% bundle install
% bundle exec rake build
% bundle exec rake release

すでにインストール済みの方は、以下のコマンドでアップデートしてご利用ください。

% embulk gem update embulk-filter-insert

Liquid(テンプレートエンジン)の恩恵

Embulk 0.7系から、設定ファイルが Liquid(テンプレートエンジン)対応になり、設定ファイルに環境変数を埋め込めるようになりました。設定ファイルの拡張子を .yml.liquid にして、以下のように{{ env.環境変数名 }}と記載すると、その箇所が環境変数に置き換えられます。

Release 0.7.0 — Embulk 0.7 documentation

Enambed Liquid template engine. If configuration file name ends with .yml.liquid, embulk embeds environment variables using Liquid template engine.

embulk-filter-insertとの関係で言うと、例えば環境変数にホスト名を埋め込んでおけば、共通の設定ファイルで、そのホスト名をカラムに挿入できるようになりました。

filters:
  - { type: insert, column: { host: {{ env.HOSTNAME }} }, at: top }

以下のようにホスト名を設定し、

happyturn% export HOSTNAME=happyturn

previewコマンドを実行すると、先頭のカラムにホスト名が入ります。便利ですね!(僕は何もしてませんけど)

happyturn% embulk preview embulk-simple-test/config.yml.liquid
2015-08-20 00:51:22.255 +0900: Embulk v0.7.1
2015-08-20 00:51:23.330 +0900 [INFO] (preview): Loaded plugin embulk-filter-insert (1.1.0)
2015-08-20 00:51:23.346 +0900 [INFO] (preview): Listing local files at directory '/Users/myoshiz/devel/embulk-simple-test/csv' filtering filename by prefix 'sample_'
2015-08-20 00:51:23.351 +0900 [INFO] (preview): Loading files [/Users/myoshiz/devel/embulk-simple-test/csv/sample_01.csv.gz]
+-------------+---------+--------------+-------------------------+
| host:string | id:long | account:long |          time:timestamp |
+-------------+---------+--------------+-------------------------+
|   happyturn |       1 |       32,864 | 2015-01-27 19:23:49 UTC |
|   happyturn |       2 |       14,824 | 2015-01-27 19:01:23 UTC |
|   happyturn |       3 |       27,559 | 2015-01-28 02:20:02 UTC |
|   happyturn |       4 |       11,270 | 2015-01-29 11:54:36 UTC |
+-------------+---------+--------------+-------------------------+

embulk-filter-insertプラグインの詳細は、過去記事をどうぞ。

プラグインの使い方などの紹介記事:カラムを好きな場所に挿し込みたい人のためのembulk-filter-insertプラグイン - 無印吉澤@HatenaBlog