非常接近 使用 Ansible 的三元运算符创建 int var 以及答案 https://stackoverflow.com/a/69109779/446302
在 Ansible 项目中,我尝试拥有一个包含整数内容的 yaml 模板文件,如下所示:
---
my_service:
enable_ipv6: false
node_listen:
- port: '{{ http_port | int }}'
ip: '{{ srv_ip }}'
不幸的是,它呈现为:
---
my_service:
enable_ipv6: false
node_listen:
- port: '8080'
ip: '192.0.0.2'
我使用的应用程序对端口类型有严格要求,这意味着除非我可以给它一个 int 端口号,否则它会崩溃。
由于其他子设置的循环,我知道我需要将其保留在模板文件中,如何投射它?
对于 Jinja2 模板 文件
service.yml.j2
---
my_service:
enable_ipv6: false
node_listen:
- port: {{ HTTP_PORT }}
ip: '{{ SRV_IP }}'
一个最小示例剧本
main.yml
---
- hosts: localhost
become: false
gather_facts: false
vars:
HTTP_PORT: 8080
SRV_IP: 127.0.0.1
tasks:
- template:
src: service.yml.j2
dest: service.yml
将生成一个输出文件
service.yml
,内容为
---
my_service:
enable_ipv6: false
node_listen:
- port: 8080
ip: '127.0.0.1'