chef-td-agentで、fluent-plugin-bigqueryの最新バージョンを使うために、chef-td-agentの記述で下記のように記述していたとします。
name "base"
description "base server role."
run_list(
"recipe[apt]",
"recipe[yum]",
"recipe[td-agent]",
)
override_attributes(
:td_agent =>
plugins: [
{ 'bigquery' },
],
}
)
基本的に、pluginなどは正式にリリースされたものを利用するのが普通ですが、バグ修正や新機能をリリースより先に取り込みたいケースがあります。
その場合、自分で用意したソースコードを使用することになりますが、それには少々工夫が必要です。
いくつか方法はありますが、今回はsource
オプションを使って解決します。
手順
大まかには2ステップです。
- gemをビルドする
- ビルドしたファイルを読み込む
gemのビルドする
やることは単純で、利用するgemに対してbuildコマンドを行うだけです。
例として、fluent-plugin-bigquery をビルドする場合は下記のようなコマンドになります。
gem build fluent-plugin-bigquery.gemspec
実行すると、fluent-plugin-bigquery-3.1.0.gem
というバイナリが作成されます。3.1.0はfluent-plugin-bigqueryの執筆時点でのバージョンが3.1.0であるためです。
ビルドしたファイルを読み込む
作成したバイナリファイルを使うように設定を書き換えます。バイナリファイルを/tmp
に置いた場合下記のようにします。
name "base"
description "base server role."
run_list(
"recipe[apt]",
"recipe[yum]",
"recipe[td-agent]",
)
override_attributes(
:td_agent =>
plugins: [
- { 'bigquery' },
+ { 'bigquery' => { 'source' => '/tmp/fluent-plugin-bigquery-3.1.0.gem' } },
],
}
)
source
オプションを使うことで、gemをダウンロードするのではなく、オプションで指定したファイルを使います。
これにより、Chefで自作のfluentdのpluginを使えます。