我使用的是ansible playbook:
清单:
[inventory]
ROUTER1 internet_bw=20
剧本:
vars:
my_bandwidth: "{{ internet_bw }}"
- name: IOS | Apply the NHRP QoS Configuration
ios_config:
provider: "{{ provider }}"
authorize: yes
parents: interface Tunnel0
lines:
- ip nhrp group INTERNET_GRP_{{ my_bandwitdth }}
运行此操作时,它会执行以下操作:
interface Tunnel0
ip nhrp group INTERNET_GRP_20
我希望它显示为:
interface Tunnel0
ip nhrp group INTERNET_GRP_020
我使用了一个单独的可行来实现这个名为internet_bw_pad,但由于我的库存包含50个设备,我想应用类似于zfill的函数来填充,这样我可以保持精度,而不必设置两个变量
我希望找到一个jinja过滤器来实现这一点,但我找不到 - 有没有人有任何想法?
感谢。
答案 0 :(得分:1)
有format过滤器:{{ '%03d' | format(my_bandwitdth|int) }}
答案 1 :(得分:0)
您可以编写自己的过滤器:
# -*- coding: utf-8 -*-
def zfill(value, width):
"""
Zfill filter for ansible
"""
return value.zfill(width)
class FilterModule(object):
"""Filter module"""
def filters(self):
return {
'zfill': zfill
}
只需将其放入./filter_plugins/zfill.py
,然后就可以在您的剧本中使用它:
---
- name: Zfill play
hosts: all
tasks:
- debug:
msg: "{{'20'|zfill(3)}}"
在您的情况下,只需将{{ my_bandwitdth }}
更改为{{ my_bandwitdth|zfill(3) }}