Salt stack 同一个jinja模板sls文件在一台主机上兼容,但在另一台主机上编译失败
我有以下SLS文件,其中我正试图将静态路由集中在仆从上: mpls_routing.sls:Salt stack 同一个jinja模板sls文件在一台主机上兼容,但在另一台主机上编译失败,salt-stack,Salt Stack,我有以下SLS文件,其中我正试图将静态路由集中在仆从上: 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:
{% 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\u SLS mpls\u路由编译此SLS文件时,该文件在一个仆从上编译良好,在另一个仆从上编译失败
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
salt-v-L'minion1,minon2'state.show\u sls mpls\u路由
奴才1:
----------
网络管理员:
----------
__环境:
基础
__补充劳工计划:
mpls_路由
服务:
|_
----------
启用:
真的
|_
----------
重新加载:
真的
|_
----------
观察:
|_
----------
文件:
/etc/sysconfig/networkscripts/route-ens192
|_
----------
要求:
-接口-ens192
-运行
|_
----------
订单:
10001
接口-ens192:
----------
__环境:
基础
__补充劳工计划:
mpls_路由
文件:
|_
----------
姓名:
/etc/sysconfig/networkscripts/route-ens192
-管理
|_
----------
资料来源:
salt://mpls_routing/mpls_routes.cfg
|_
----------
订单:
10000
奴才2:
-构建映射时,呈现SLS“基本:mpls_路由”失败
在“”第6行第1列中:
接口-ens192:
^
发现冲突ID“NetworkManager”
在“”第31行第1列中:
网络管理员:
^
错误:仆从返回非零退出代码
我不知道为什么第二个仆从会失败。错误中的接口名称表明jinja模板获得的接口名称是正确的。即使salt的目标仅仅是仆从2,sls也无法编译。我不知道这里发生了什么或者如何修复它?在Gijs的上述评论引导我找到它之后,我回答了自己的问题。sls文件中的第二个对象
NetworkManager:
在minion2上重复,minion2有多个由grains返回的ip_接口值。这意味着sls有两个相同字典密钥的副本。我将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-{{interface}}:
service.running:
- name: NetworkManager
- enable: True
- reload: True
- watch:
- file: /etc/sysconfig/network-scripts/route-{{interface}}
- require:
- interface-{{interface}}
{% endif %}
{% endfor %}
哪个解决了问题。您能显示哪个界面吗以上两个仆从都有?仆从1:ip_接口:-------------ens192:-172.20.1.17-fe80::250:56ff:fea2:53c4 lo:-127.0.0.1-::1仆从2:ip_接口:-------------ens192:-172.20.0.12-fe80::250:56ff:fea2:2645 ens224:lo:-127.0.0.1-::1你把它钉牢了。minion 2上的第二个接口正在为NetworkManager生成第二个映射条目。将sls更改为NetworkManager-{{interface}}: