盐中不允许映射值

时间:2017-11-09 10:44:03

标签: linux automation jinja2 devops salt

我得到了         渲染SLS' base:nginx'失败:此处不允许映射值;第6行

当我在ansible中运行此代码时。

parent_dict = [{'nginx-1.13.2.tar.gz':'https://nginx.org/download/nginx-1.13.2.tar.gz'},{'zlib-1.2.11.tar.gz':'https://www.zlib.net/zlib-1.2.11.tar.gz'}]

{% for dict_item in parent_dict %}
   {% for key, value in dict_item.items() %}
  install-zlib:
    cmd.run:
      - name: |
          cd /tmp
          curl -L  {{ value }} -o {{ key }}
          tar xzf {{ key }}
          rm -rf {{ key }}
      - creates: /tmp/{{ key }}
   {% endfor %}
{% endfor %}

1 个答案:

答案 0 :(得分:1)

一些注意事项:

  1. Jinja2的定界符parent_dict{%中没有包含对}%的赋值。
  2. install-zlib的整个块之前没有多余的2个空格的缩进,如果同一模板中的其他YAML内容具有不同的缩进,则可能使它成为无效的YAML。
  3. 循环两次,最终将得到重复的ID install-zlib。您应该改为install-{{ key }}

错误消息“此处不允许映射值”本身来自YAML解析器,通常表明您在意外的地方使用了冒号,我在这里看不到,但由于明显,情况可能是这样您并非只是将代码复制并粘贴到此处,否则由于以上#1问题,您将报告parent_dict的其他错误未定义。