繁体   English   中英

Saltstack Jinja2自然排序

[英]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.runrequire 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM