盐:[]是什么意思?

时间:2016-04-27 13:10:53

标签: salt-stack

这里的[]是什么意思?

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

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

这只是简单的速记。 Yaml需要它,所以你可以在它下面有file.managed。你也可以这样格式化:

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