ansible - 如何增加主机上的值(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?
解决方案
在下面添加
- name: Set Broker ID
set_fact:
broker_id: {{ groups['all'].index(inventory_hostname) }}
其次是其他任务。
推荐阅读
- python - Tkinter OOP Buttons 导致 AttributeError 我不明白
- python - 我的素数程序中的指数引发内存错误,我该如何解决?
- swift - 列表中带有条件的 NavigationLink
- c# - 如何在 Visual Studio 的数据集中添加/删除/修改特定数据表中的行?
- windows - vim 和 vscode 如何强制写入另一个进程使用的文件?
- c - c中的单链表数据结构:链接列表
- python - 无法弄清楚我的 os.listdir 方法发生了什么 - python
- ruby-on-rails - 使用 Ruby 的 Firebase 云消息传递显示无效令牌
- javascript - e.target 和 htmlelement 不能进行比较有什么原因吗?
- rabbitmq - Rabbitmq 中的哪些进程在分配“消息”类型的内存时可能导致崩溃