🕊️

Fluentdで未リリース / フォークしたプラグインを気軽に入れる

2021/10/25に公開

Flutentdで未リリースのプラグインを入れるときのための覚書です。

以下のようなときに役立つかと思います。

  • Fluentdプラグインの最新の修正がリリースされていない
  • Fluentdプラグインをちょっとフォークして使いたい

Fluentdのプラグインには大変お世話になっているのですが、たまに困るのがプラグインがリリースされていなかったり、メンテが止まっていたりするときです。

td-agent-gem / fluent-gemはいずれも gemコマンドのラッパーなので、RubyGems上でリリースされていないプラグインをインストールすることができません。

この課題を解決するにはどうすればいいでしょうか。2つほど方法が考えられます。

  • Bundlerを使う
  • specific_install を使う

Bundlerを使う

おそらく、こちらが定番なのではないかと思います。Bundlerを使う方法です。
公式にもドキュメントがあります。

https://docs.fluentd.org/deployment/plugin-management#gemfile-option

https://www.clear-code.com/blog/2018/4/6.html

BundlerとGemfileの扱い方については、Railsを触っていればもう勝手は分かっているものではないかと思いますので割愛します。GitHubからのインストールもかんたんです。

specific_installを使う

とはいえ、Gemfileを用意して、となると少々構えが大きくなるのは事実です。
もっと気軽に入れたい場合には、specific_installを使う方法があります。今回メインで書きたいのはこちらです。

specific_installはgemをGitHubのリポジトリから直接インストールできるようにしてくれるgemです。

なお、わたしはこちらの記事でこのgemを知りました。ありがとうございます。
https://qiita.com/yuku_t/items/5ab4fbe404b718999a35

このspecific_install、もちろんtd-agent-gem / fluent-gemでも使えます。
以下のようにGitHub上のリポジトリを直接指定してインストールすることができます。

$ td-agent-gem install specific_install
$ td-agent-gem specific_install https://github.com/foo/fluent-plugin-bar.git

オプションでブランチを指定したりもできます。
https://github.com/rdp/specific_install#additional-options

ちゃんと運用するのであればBundlerがよいかと思いますが、ごく一部のプラグインだけフォークしたものを使いたいというときは、こちらの方法も良いかと思います。

Discussion