概要
Integrationをテストする場合、例えば今Ingestion Pipelineの修正であれば少なくともElasticsearchが必要で、他に例えばダッシュボードに修正を入れる場合は当然Kibanaなどそのほかのコンポーネントも必要になります。Elasticではその辺りの一式を揃えるための elastic-package というツールを提供しています。
そして別のIntegrationsのテスト関連の記事を書いていて気づいたのですが、おそらくElasticsearch / Kibana / FleetなどElastic Stack一式をローカル環境にセットアップする一番手っ取り早い方法はIntegrationsのパッケージ開発用に提供されているelastic-package
コマンドを利用することじゃないでしょうか。
一回セットアップして仕舞えばコマンド一発でローカルに特定バージョンのElastic Stackを構築できます。
前提
この記事では以下を前提にしています。
- macOS (他でも動くと思いますが、試していません)
- Dockerデスクトップインストール済み
セットアップ
最新版のリリースページから適切なパッケージをダウンロードします。展開するとelastic-package
コマンドの実行ファイルがあるので、これをパスの通ったところに配置します。
macOSの場合、ダウンロード後そのまま実行しようとするとセキュリティーの設定で起動できないため、以下のコマンドで実行を許可します。
$ xattr -r -d com.apple.quarantine elastic-package
以下のコマンドで動作確認します。
$ elastic-package -h
elastic-package - Command line tool for developing Elastic Integrations
...(略)...
動いているようですね。
Elastic Stackの起動
コマンドが使えるようになったら以下のコマンドでElastic Stackを一気に起動できます。
$ elastic-package stack up -v \
--version=8.8.0 \
--services="kibana,package-registry,elastic-agent,elasticsearch,fleet-server"
起動できたらKibanaにはhttps://127.0.0.1:5601でアクセスできます。
Elasticsearchに直接アクセスする場合、ユーザー名: elastic, パスワード: changeme で認証できます。
$ curl -k https://elastic:changeme@127.0.0.1:9200
-h
オプションでヘルプを見ると、stack up
コマンドでは以下のオプションが使えるようです。
Usage:
elastic-package stack up [flags]
Flags:
-d, --daemon daemon mode
-h, --help help for up
--provider string service provider to start a stack (compose)
-s, --services strings component services (comma-separated values: "kibana,package-registry,elastic-agent,elasticsearch,fleet-server")
--version string stack version (default "8.6.2")
Global Flags:
-p, --profile string select a profile to use for the stack configuration. Can also be set with ELASTIC_PACKAGE_PROFILE
-v, --verbose verbose mode
ここにあるように-d
オプションをつけて起動するとdaemonで起動します。その場合には以下のコマンドで停止できます。
$ elastic-package stack down
これで好きな時に好きなバージョンのElastic Stackが起動できていつでもテストできますね!
制限
elasticsearch.yml
やkibana.yml
のような設定ファイルをカスタマイズする方法は用意されていません。設定周りの動作確認のために利用するのは難しそうです。