首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相同的jinja模板sls文件可以在一台主机上编译,但在另一台主机上无法编译

相同的jinja模板sls文件可以在一台主机上编译,但在另一台主机上无法编译
EN

Stack Overflow用户
提问于 2018-08-10 01:55:50
回答 1查看 274关注 0票数 0

我有以下SLS文件,在其中我试图将静态路由集中在minion上:

mpls_routing.sls:

代码语言:javascript
复制
{% for interface in grains.get('ip_interfaces') %}
{% if interface != 'lo' %}

interface-{{interface}}:
  file:
    - name: /etc/sysconfig/network-scripts/route-{{interface}}
    - managed
    - source: salt://mpls_routing/mpls_routes.cfg

NetworkManager:
  service.running:
    - enable: True
    - reload: True
    - watch:
      - file: /etc/sysconfig/network-scripts/route-{{interface}}
    - require:
      - interface-{{interface}}

{% endif %}
{% endfor %}`

当我尝试使用state.show_sls mpls_routing编译这个SLS文件时,这个文件在一个minion上编译得很好,而在另一个minion上编译失败。

代码语言:javascript
复制
salt -v -L 'minion1,minon2' state.show_sls mpls_routing

minion1:
    ----------
    NetworkManager:
        ----------
        __env__:
            base
        __sls__:
            mpls_routing
        service:
            |_
              ----------
              enable:
                  True
            |_
              ----------
              reload:
                  True
            |_
              ----------
              watch:
                  |_
                    ----------
                    file:
                        /etc/sysconfig/network-scripts/route-ens192
            |_
              ----------
              require:
                  - interface-ens192
            - running
            |_
              ----------
              order:
                  10001
    interface-ens192:
        ----------
        __env__:
            base
        __sls__:
            mpls_routing
        file:
            |_
              ----------
              name:
                  /etc/sysconfig/network-scripts/route-ens192
            - managed
            |_
              ----------
              source:
                  salt://mpls_routing/mpls_routes.cfg
            |_
              ----------
              order:
                  10000
minion2:
    - Rendering SLS 'base:mpls_routing' failed: while constructing a mapping
        in "<unicode string>", line 6, column 1:
          interface-ens192:
          ^
      found conflicting ID 'NetworkManager'
        in "<unicode string>", line 31, column 1:
          NetworkManager:
          ^
ERROR: Minions returned with non-zero exit code

我不确定为什么这会在第二个minion上失败。错误中的接口名称表明jinja模板的接口名称是正确的。即使salt只针对minion2,sls也无法编译。我不知道这是怎么回事,也不知道该怎么解决?

EN

回答 1

Stack Overflow用户

发布于 2018-08-10 04:37:41

在Gijs上面的评论之后,回答我自己的问题将我引向了这个问题。sls文件中的第二个对象

代码语言:javascript
复制
NetworkManager:

在具有多个由grains返回的ip_interface值的minion2上重复。这意味着sls有相同字典关键字的两个副本。我将sls文件更新为:

代码语言:javascript
复制
{% for interface in grains.get('ip_interfaces') %}
{% if interface != 'lo' %}

interface-{{interface}}:
  file:
    - name: /etc/sysconfig/network-scripts/route-{{interface}}
    - managed
    - source: salt://mpls_routing/mpls_routes.cfg

NetworkManager-{{interface}}:
  service.running:
    - name: NetworkManager
    - enable: True
    - reload: True
    - watch:
      - file: /etc/sysconfig/network-scripts/route-{{interface}}
    - require:
      - interface-{{interface}}

{% endif %}
{% endfor %}

解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51773223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档