首页 > 解决方案 > 如何增加主机上的值(Ansible)

问题描述

我有无数的 kafka 服务器要配置,它们的 id 必须彼此不同。必须通过 jinja 模板进行配置。

如果有无限数量的服务器,它们的 broker.id 字段应该从 0 开始到无穷大。

# The id of the broker. This must be set to a unique integer for each broker.
broker.id={{ broker_id }}

预期在 conf 文件中:

服务器1

broker.id=0

服务器2

broker.id=1

服务器N

broker.id=N-1

编辑

主要的.yml

---

- include: install.yml
  tags:
    - kafka
    - install

- include: config.yml
  tags:
    - kafka
    - config

配置.yml

---

- name: server properties
  template:
    src: server.properties
    dest: /opt/kafka/config/server.properties

- name: zookeeper properties
  template:
    src: zookeeper.properties
    dest: /opt/kafka/config/zookeeper.properties

默认值/main.yml

---
#server.properties
broker_id: 0

模板/server.properties

.
.
.

############################# Server Basics #############################

# The id of the broker. This must be set to a unique integer for each broker.
broker.id={{ broker_id }}

############################# Socket Server Settings #############################
.
.
.

Ansible 将相同的配置应用于多个服务器,这是正常行为。但是在应用相同的配置时 broker.id 必须是唯一的。

{{ 99999999 | random | to_uuid }}

这是可行的,我仍然很好奇是否可以将 0 分配给 broker.id 并在每台服务器上增加 +1?

标签: ansible

解决方案


在下面添加

- name: Set Broker ID
  set_fact:
     broker_id: {{ groups['all'].index(inventory_hostname) }}

其次是其他任务。


推荐阅读