【发布时间】:2018-08-10 04:37:41
【问题描述】:
我有以下 SLS 文件,我试图将静态路由集中在 minions 上:
mpls_routing.sls:
{% 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 上编译失败。
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
我不确定为什么第二个仆从会失败。错误中的接口名称表明 jinja 模板正在获取正确的接口名称。即使 salt 仅针对 minion2,sls 也无法编译。我不确定这里发生了什么或如何解决?
【问题讨论】:
-
能否请您说明两个奴才都有哪些接口?
-
minion1 以上:ip_interfaces: ---------- ens192: - 172.20.1.17 - fe80::250:56ff:fea2:53c4 lo: - 127.0.0.1 - ::1 minion2: ip_interfaces: ---------- ens192: - 172.20.0.12 - fe80::250:56ff:fea2:2645 ens224: lo: - 127.0.0.1 - ::1
-
Gijs 你成功了。 minion 2 上的第二个接口正在为 NetworkManager 生成第二个映射条目。将 sls 更改为 NetworkManager-{{interface}}:
标签: salt-stack