【发布时间】:2023-03-11 19:19:01
【问题描述】:
ansible 版本:2.4.2
我想用一个变量创建多个模板,每次递增。例如,我想生成多个 prometheus 配置文件,每个顺序端口递增 1(int)。
假设我想最终得到:prometheus1.conf、prometheus2.conf、prometheus3.conf。这些都是由 prometheus.conf.j2 模板生成的。我知道了文件名,但没有计算出模板本身的计数。
在我的 group_vars/all/vars.yml 我有
prometheus_internal_port: "9090"
而我的任务是:
- name: "Install supervisord template for {{ role }} and notify supervisor of the change"
template:
src: "supervisord.conf.j2"
dest: "{{ supervisor_conf_dir }}/{{ role }}_{{ item }}.conf"
owner: "{{ deploy_user }}"
group: "{{ deploy_user }}"
with_items:
- "{{ the_endpoints }}"
notify:
- "add_{{ role }}"
- "update_{{ role }}"
tags:
- "additional_templates"
- "supervisor_configs"
我的模板(注意 prometheus_internal_port|int + loop.index|int 不起作用):
[program:{{ role }}_{{ item }}]
autorestart = true
autostart = true
command = {{ opskit_dir }}/{{ role }}_{{ item }}/bin/prometheus --web.external-url='https://{{ inventory_hostname }}:4434/{{ deploy_env }}-{{ role }}_{{ item }}' --config.file='{{ opskit_dir }}/{{ role }}_{{ item }}/conf/{{ role }}_{{ item }}.yml' --storage.tsdb.path='{{ deploy_dir }}/data/{{ role }}_{{ item }}/data' --storage.tsdb.retention='365d' --log.level='debug' --web.listen-address=':{{ prometheus_internal_port|int + loop.index|int }}'
directory = {{ opskit_dir }}//{{ role }}_{{ item }}
redirect_stderr = true
stdout_logfile = {{ opskit_dir }}/log/{{ role }}_{{ item }}.log
stdout_logfile_backups = 5
stdout_logfile_maxbytes = 10MB
stopwaitsecs = 300
现在我需要的是生成的配置中的变量来增加:
prometheus1.conf 有
... --web.listen-address=':9090' ...
prometheus2.conf有
... --web.listen-address=':9091' ...
prometheus3.conf有
... --web.listen-address=':9092' ...
提前致谢!
【问题讨论】:
标签: loops counter ansible-template