盐:[]是什么意思?

问题描述 投票:3回答:2

[]在这里的盐意味着什么?

httpd:
  pkg.installed: []
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://httpd/httpd.conf
    - require:
      - pkg: httpd

来自https://docs.saltstack.com/en/latest/ref/states/ordering.html#requisite-statements

我有足够的幻想来猜测它的含义,但......它是否记录在某处?

salt-stack
2个回答
4
投票

这只是一个非协调盐开发人员不良文档习惯的例子,假设你知道太灵活的盐状态树结构。

您需要了解saltstack中有很多快捷方式。以发布的示例为例。

# you can write this "shorthand" to install httpd
# http are ID and also package name
httpd:
  pkg.installed

# this do similar works. I specify a more descriptive ID 
install-http-package: 
  pkg.installed:
    - name: http

# this install httpd package together with other package.  Again I use descriptive ID 
install-web-app-pacakges:
  pkg.installed:
    - pkgs:
      - httpd
      - php5
      - django

所以问题是关于第一级“id”。 Saltstack将遍历整个yaml树以确定它是否是描述性值,或将其用作包名。

但是,解析需要符合某种格式,因此不会失败。如果你过分使用速记,解析器就会变得混乱。简写只涉及2行价值。

因此,为了克服该问题,传递空列表值[]。然后解析器看到[]并同意它会将描述性ID httpd作为包名传递,并继续执行其他操作。

事实上,“速记组”可以这样写。

# Use simple shorthand 
httpd:
  pkg.installed

copy-customise-httpd.conf-to-server:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://httpd/httpd.conf
    - require:
      - pkg: httpd

过度速记没有任何好处。你只需保存几行输入。速记是盐叠yaml配置陡峭学习曲线的原因之一。

还有另一个使用包名称为id的捕获:ID必须是唯一的。如果你因为一些琐事的原因重复使用它们,你可能会遇到一些错误。


1
投票

这只是简写而已。 Yaml需要它,所以你可以在它下方有file.managed。你也可以这样格式化:

httpd:
  pkg:
    - installed
  file:
    - managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://httpd/httpd.conf
    - require:
      - pkg: httpd
© www.soinside.com 2019 - 2024. All rights reserved.