iteritems上的支柱jinja错误

2024-06-16 10:53:17 发布

您现在位置:Python中文网/ 问答频道 /正文

通过支柱数据和jinja模板进行问题迭代。我从一个正在工作的salt/pillar安装中获取了大部分模板,但现在无法在新环境中工作。在

我在迭代的实现中尝试了几种不同的语法,但仍然得到相同的错误。在

服务器名:

数据编译失败:

Rendering SLS 'base:pillar_lab_user' failed: Jinja variable 'str object' 

没有属性“iteritems”

^{pr2}$

支柱数据

users:
  user1:
    fullname: User1 Fullname
    uid: 951
    gid: 951
    shell: /bin/bash
    groups:
      - sudo
      - admin
    password: (REMOVED)
    pub_ssh_keys: (REMOVED)

  user2:
    fullname: User2 Fullname
    uid: 955
    gid: 955
    shell: /bin/bash
    groups:
     - sudo
     - admin
    password: (REMOVED)
    pub_ssh_keys: (REMOVED)

{%为用户,参数为用户.iteritems()%}

iteritems和通过jinja模板访问数据的正确语法是什么。 我已经尝试过这种语法的许多变体,但是仍然得到

ServerName:
    Data failed to compile:
----------
     Rendering SLS 'base:pillar_lab_user' failed: Jinja variable 'str object' 

没有属性“iteritems”

编辑

这都是用户错误,支柱配置格式不正确。我删除了第一行

"{% set users = salt['pillar.get']('XXXXXXX') %}" 

所以我没有用支柱。获取以柱子为目标顶部.sls. 它现在正常工作了。在


Tags: 数据用户模板base错误语法jinjasalt
1条回答
网友
1楼 · 发布于 2024-06-16 10:53:17

您的数据应失败:
Rendering SLS 'base:so' failed: Jinja variable 'dict object' has no attribute 'empty_password'

您看到此错误的原因一定是由于不存在的支柱数据造成的。在

您已经粘贴了完整的支柱数据,但在状态文件中留下了XXXXXXX。 这表明修复可能很简单:

{% set users = salt['pillar.get']('users') %}

或者,如果不是这样:请检查您是否使用pillarenv,然后记住传递正确的一个,您只需在命令行中验证:

^{pr2}$

如果它不返回您的词典,请尝试:

salt 'your minion' pillar.get users pillarenv=your_pillar_env

相关问题 更多 >