如何在 Jinja2 中遍历 Kannel 配置

How to loop over Kannel config in Jinja2

我有一个用于 Kannel(开源 WAP 和 SMS 网关)的配置文件,其中包含多个可能随时间变化的条目。该文件如下所示:

group = smsc
smsc = smpp
smsc-id = my_smsc
allowed-smsc-id = my_smsc
host = 127.1.2.3
port = 1234
receive-port = 0
smsc-username = User1
smsc-password = FakePassword
transceiver-mode = yes
system-type = "SMPP"
throughput = 50
max-pending-submits = 10
source-addr-ton = 0
source-addr-npi = 0
enquire-link-interval = 30

可以在同一文件中多次添加此配置块以打开多个绑定以增加吞吐量。

我需要使用 Jinja2 遍历文件的 sls 版本,以便使用盐在容器上创建一个 conf 文件。

但是这个 post 只是为了收集关于如何遍历这样一个文件的任何想法?任何帮助将不胜感激!

谢谢!

我最终解决了这个问题,方法是将这些值放入支柱文件 (.sls),然后创建一个包含链接到原始文件的占位符值的模板。这是模板的样子:

group="{{ kanneltrx.group }}"
smsc="{{ kanneltrx.smsc }}"
smsc-id="{{ kanneltrx.smsc_id }}"
allowed-smsc-id="{{ kanneltrx.allowed_smsc_id }}"
host="{{ kanneltrx.host }}"
port="{{ kanneltrx.port }}"
receive-port="{{ kanneltrx.receive_port }}"
smsc-username="{{ kanneltrx.smsc_username }}"
smsc-password="{{ kanneltrx.smsc_password }}"
transceiver-mode="{{ kanneltrx.transceiver_mode }}"
system-type="{{ kanneltrx.system_type }}"
throughput="{{ kanneltrx.throughput }}"
max-pending-submits="{{ kanneltrx.max_pending_submits }}"
source-addr-ton="{{ kanneltrx.source_addr_ton }}"
source-addr-npi="{{ kanneltrx.source_addr_npi }}"
enquire-link-interval="{{ kanneltx.enquire_link_interval }}"

括号中的值是当时支柱文件中的字段。

唯一缺少的是如何告诉 Jinja 循环遍历配置的次数以获得所需的绑定数量。为此,我在支柱中添加了另一个名为 number_of_binds 的字段,并编写了一个 for 语句来循环多次。

{% if pillar.kanneltx is defined %}
{% set kanneltx = salt['pillar.get']('kanneltx') %}
{% for i in range ( kanneltx.number_of_binds ) %}