[英]Saltstack jinja2 natural sort
我有支柱。例如:
dnsmasq:
zones:
domain_com:
hosts:
1.1.1.1: host1
1.1.1.2: host2
1.1.1.3: host3
1.1.1.21: host21
和我的SLS:
{% for zone in pillar['dnsmasq']['zones'] %}
/tmp/{{ zone }}:
file.managed:
- contents:
{% for ip, host in pillar['dnsmasq']['zones'][zone]['hosts']|dictsort %}
{{ ip }} {{ host }}
{% endfor %}
{% endfor %}
这将产生:
# cat /tmp/domain_com
1.1.1.1 host1
1.1.1.2 host2
1.1.1.21 host21
1.1.1.3 host3
一个人如何在saltstack中使用人为/自然排序,所以我的文件将是:
# cat /tmp/domain_com
1.1.1.1 host1
1.1.1.2 host2
1.1.1.3 host3
1.1.1.21 host21
您似乎需要编写一个自定义过滤器 ,因为似乎没有什么可以满足您的需求。
或者您致电bash进行救援并执行cat /tmp/domain_com | sort -n > cat /tmp/domain_com
然后使用cmd.run
和require
cat /tmp/domain_com | sort -n > cat /tmp/domain_com
。 它使状态有些混乱,但可以保持原状。 我更喜欢这种方法。
未经测试的例子
{% for zone in pillar['dnsmasq']['zones'] %}
/tmp/{{ zone }}:
file.managed:
- contents:
{% for ip, host in pillar['dnsmasq']['zones'][zone]['hosts'] %}
{{ ip }} {{ host }}
{% endfor %}
cat /tmp/{{ zone }} | sort -n > /tmp/{{ zone }}:
cmd.run:
- require:
- file: /tmp/{{ zone }}
{% endfor %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.