这里的[]
是什么意思?
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
我有足够的幻想来猜测它的含义,但......它是否记录在某处?
答案 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