dragomirr.kafka
Ansible Kafka ロール
Debian および RedHat ディストリビューションで KRaft モードの Kafka をインストールするための Ansible ロールです。KRaft はバージョン 3.3.1 で生産準備が整ったとされているため、このロールは Kafka バージョン 3.3.1 以上をデプロイするために使用すべきです。
Ubuntu 22.04 と AlmaLinux 8 でテスト済みですが、依存関係をインストールするためにこのロールを使用しない限り、ほとんどのディストリビューションで動作するはずです。 kafka_install_dependencies
変数を参照してください。
詳細は changelog を確認してください。
要件
- Kafka を実行するサーバーは x86_64 アーキテクチャであること
- Ansible 2.15 - 他のバージョンでのテストはしていませんが、2.10 以上のバージョンではおそらく動作するでしょう
- Java がインストールされていること - バージョン 8(非推奨)、11、または 17 -
apt install openjdk-17-jre-headless
またはdnf install java-17-openjdk-headless
- Ubuntuでは、
acl
パッケージからsetfacl
をインストールする必要があります -apt install acl
ロール変数
必須:
kafka_node_id
- Kafka ノード ID。整数またはゼロで、ホストごとにユニークである必要があります。
オプション:
kafka_topics
- Kafka トピックのリストと設定。kafka_install_dependencies
- Debian ベースのディストリビューションに Java とacl
をインストールする必要があるか。現状、これをtrue
に設定することでインストール可能です。kafka_config_path
- 設定しない場合、設定は Kafka ホームにデプロイされます。次回のロール実行で冪等性が失われ、Kafka の再起動を引き起こす可能性があるため、デフォルトの設定場所に設定しないでください。kafka_additional_config
- ロールで定義されていない設定パラメータのマップを指定します。kafka_opts
- 起動時に実行する Kafka オプションのリストまたは文字列を指定します。この変数から環境変数KAFKA_OPTS
が作成されます。
依存関係
kafka_install_dependencies=true
の場合、依存関係はありません。その他の場合は、要件セクションを参照してください。
プレイブックの例
Ansible Galaxy を使用してロールをインストールします ansible-galaxy install dragomirr.kafka
- hosts: servers
roles:
- role: dragomirr.kafka
# プレイ内で kafka_node_id を設定するのは、1 つの Kafka ノードがある場合のみ有効です
# 複数の Kafka ノードがある場合は、それぞれにユニークな kafka_node_id を設定する必要があります
kafka_node_id: 0
kafka_heap_size: 2G
kafka_install_dependencies: true
kafka_topics:
- name: topic1
- name: topic2
replication_factor: 1
partitions: 10
# ロールで定義されていない設定を追加
kafka_additional_config:
message.max.bytes: 10000
# Kafka の起動オプションを追加
kafka_opts:
- -XX:NewSize=256m
ライセンス
GPL3
テスト
テストは、molecule を使用して、virtualbox および vagrant で行います。
シナリオは 3 つあります:
- 1 インスタンスを使用するデフォルトシナリオ。
- すべてのインスタンスに対してコントローラーとブローカーの役割を持つ 3 インスタンスを使用するクラスターシナリオ。
- 6 インスタンスを使用するクラスター結合シナリオ。これらのうち 3 インスタンスはブローカーとコントローラーの役割を持ち、残りの 3 インスタンスはブローカーの役割のみです。