mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2025-12-06 09:12:45 +01:00
31 lines
1.0 KiB
Plaintext
31 lines
1.0 KiB
Plaintext
{% set current_kafkanodes = salt.saltutil.runner('mine.get', tgt='G@role:so-kafkanode or G@role:so-manager', fun='network.ip_addrs', tgt_type='compound') %}
|
|
{% set pillar_kafkanodes = salt['pillar.get']('kafka:nodes', default={}, merge=True) %}
|
|
|
|
{% set existing_ids = [] %}
|
|
{% for node in pillar_kafkanodes.values() %}
|
|
{% if node.get('id') %}
|
|
{% do existing_ids.append(node['nodeid']) %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% set all_possible_ids = range(1, 256)|list %}
|
|
|
|
{% set available_ids = [] %}
|
|
{% for id in all_possible_ids %}
|
|
{% if id not in existing_ids %}
|
|
{% do available_ids.append(id) %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
{% set final_nodes = pillar_kafkanodes.copy() %}
|
|
|
|
{% for minionid, ip in current_kafkanodes.items() %}
|
|
{% set hostname = minionid.split('_')[0] %}
|
|
{% if hostname not in final_nodes %}
|
|
{% set new_id = available_ids.pop(0) %}
|
|
{% do final_nodes.update({hostname: {'nodeid': new_id, 'ip': ip[0]}}) %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
kafka:
|
|
nodes: {{ final_nodes|tojson }}
|