【问题标题】:Salt grains in Jinja templateJinja 模板中的盐粒
【发布时间】:2016-01-22 19:44:54
【问题描述】:

我正在尝试在 SaltStack 中做一些简单的事情:使用公式管理 /etc/apt/sources.list 文件。这是我的formula/init.sls 文件中的相关部分:

/etc/apt/sources.list:
  - file.managed:
    - template: jinja
    - source: salt://pkg/files/etc/apt/sources.list
    - user: root
    - group: root
    - mode: 0644

refresh-apt:
  cmd.wait:
    - name: '/usr/bin/apt-get -y update'
    - watch:
      - file: /etc/apt/sources.list

这是文件pkg/files/etc/apt/sources.list

{{ pillar['headers']['salt']['file'] }}

deb http://{{ grains['aws_package_zone'] }}.ec2.archive.ubuntu.com/ubuntu/ {{ grains['oscodename'] }} main universe multiverse
deb-src http://{{ grains['aws_package_zone'] }}.ec2.archive.ubuntu.com/ubuntu/ {{ grains['oscodename'] }} main universe multiverse

deb http://{{ grains['aws_package_zone'] }}.ec2.archive.ubuntu.com/ubuntu/ {{ grains['oscodename'] }}-updates main universe multiverse
deb-src http://{{ grains['aws_package_zone'] }}.ec2.archive.ubuntu.com/ubuntu/ {{ grains['oscodename'] }}-updates main universe multiverse

deb http://{{ grains['aws_package_zone'] }}.ec2.archive.ubuntu.com/ubuntu/ {{ grains['oscodename'] }}-backports main universe multiverse
deb-src http://{{ grains['aws_package_zone'] }}.ec2.archive.ubuntu.com/ubuntu/ {{ grains['oscodename'] }}-backports main universe multiverse

deb http://security.ubuntu.com/ubuntu {{ grains['oscodename'] }}-security main universe multiverse
deb-src http://security.ubuntu.com/ubuntu {{ grains['oscodename'] }}-security main universe multiverse

grains['aws_package_zone'] 在这种情况下返回字符串 us-west-2(或您所在区域的任何代码),grains['oscodename'] 将返回该版本的 Ubuntu 代号名称:trusty、xenial 等。

显然 Salt 不喜欢这样,因为当我尝试运行 state.highstate 时出现以下错误:

machine.fqdn:
    Data failed to compile:
----------
    ID /etc/apt/sources.list in SLS pkg is not a dictionary

不确定我做错了什么...有什么建议吗?对不起,如果这是基本的。

【问题讨论】:

  • 这个问题与this one重复;你可以在那里找到你的答案。此外,您可能希望查看 pkgrepo.managed 状态,而不是模板化 sources.list。
  • (请注意,实际问题与 jinja 中的 grain 访问无关;这对我来说看起来是正确的)

标签: jinja2 salt-stack


【解决方案1】:

正如 Andrew 在他的评论中提到的,问题在于 /etc/apt/sources.list 定义中的额外“-”:

...
/etc/apt/sources.list:
  - file.managed: <<-- remove this dash; should be just 'file.managed'
    - template: jinja
...

【讨论】:

    猜你喜欢
    • 2018-05-27
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多