[英]Jinja2 Templating with Ansible, and zfill
我使用一本有趣的劇本:
庫存:
[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的函數進行填充,這樣我可以保持精度,而不必設置兩個變量。
我希望找到一個實現這個目的的篩選器,但找不到一個-有人有什么想法嗎?
謝謝。
有格式過濾器: {{ '%03d' | format(my_bandwitdth|int) }}
{{ '%03d' | format(my_bandwitdth|int) }}
您可以編寫自己的過濾器:
# -*- 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) }}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.