我的sls档案:
/etc/sudoers.d/foo:
file.managed:
- contents: |
foo ALL = NOPASSWD: /usr/bin/systemctl restart minio_storage-foo.service
foo ALL = NOPASSWD: /bin/systemctl restart minio_storage-foo.service
- template: jinja
- mode: 0440
错误消息:
salt:/srv # salt-ssh aptguettler state.sls minio_storage
[CRITICAL] Rendering SLS 'base:minio_storage.django' failed: while constructing a mapping
in "<unicode string>", line 29, column 7
found conflicting ID 'foo ALL = NOPASSWD'
in "<unicode string>", line 31, column 7
aptguettler:
- Rendering SLS 'base:minio_storage.django' failed: while constructing a mapping
in "<unicode string>", line 29, column 7
found conflicting ID 'foo ALL = NOPASSWD'
in "<unicode string>", line 31, column 7
怎么啦?
发布于 2019-05-17 12:56:05
这是:
- contents: |
为contents
引入一个值,它是为所有缩进行运行的块样式文字标量。缩进必须大于键contents
的缩进。因为你的下一行
foo ALL = NOPASSWD: /usr/bin/systemctl restart minio_storage-foo.service
不缩进更多,它终止块样式的文字标量(到空字符串),然后引入下一个键foo ALL = NOPASSWD
和作为值/usr/bin/systemctl restart minio_storage-foo.service
的映射,映射是序列的第一项。但是,下一行具有相同的键,因为映射和映射键在YAML中必须是唯一的,因此出现了错误。
当您发现自己需要缩进文字标量指示符(|
)后面的行时,应该很明显的原因是:键的值需要缩进多于键,否则您将不知道何时引入了映射的下一个键。
发布于 2019-05-17 12:20:26
别问我为什么,但这很管用。
/etc/sudoers.d/foo:
file.managed:
- contents: |
foo ALL = NOPASSWD: /usr/bin/systemctl restart minio_storage-foo.service
foo ALL = NOPASSWD: /bin/systemctl restart minio_storage-foo.service
- template: jinja
- mode: 0440
你注意到区别了吗?
在"foo ALL“之前还有一个空间。这是YAML。
https://serverfault.com/questions/967766
复制相似问题