我有pillar.example:
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
答案 0 :(得分:0)
看起来你需要写一个custom filter,因为似乎没有任何东西可以满足您的需求。
或者您拨打bash进行救援,然后使用cat /tmp/domain_com | sort -n > cat /tmp/domain_com
和cmd.run
执行require
。它使状态变得有点混乱,但保持原状。我更喜欢这种方法。
未经测试的示例
{% 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 %}