首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SaltStack:找到冲突的ID

SaltStack:找到冲突的ID
EN

Server Fault用户
提问于 2019-05-17 12:20:26
回答 2查看 2.6K关注 0票数 2

我的sls档案:

代码语言:javascript
运行
复制
/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

错误消息:

代码语言:javascript
运行
复制
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

怎么啦?

EN

回答 2

Server Fault用户

发布于 2019-05-17 12:56:05

这是:

代码语言:javascript
运行
复制
- contents: |

contents引入一个值,它是为所有缩进行运行的块样式文字标量。缩进必须大于键contents的缩进。因为你的下一行

代码语言:javascript
运行
复制
  foo ALL = NOPASSWD: /usr/bin/systemctl restart minio_storage-foo.service

不缩进更多,它终止块样式的文字标量(到空字符串),然后引入下一个键foo ALL = NOPASSWD和作为值/usr/bin/systemctl restart minio_storage-foo.service的映射,映射是序列的第一项。但是,下一行具有相同的键,因为映射和映射键在YAML中必须是唯一的,因此出现了错误。

当您发现自己需要缩进文字标量指示符(|)后面的行时,应该很明显的原因是:键的值需要缩进多于键,否则您将不知道何时引入了映射的下一个键。

票数 4
EN

Server Fault用户

发布于 2019-05-17 12:20:26

别问我为什么,但这很管用。

代码语言:javascript
运行
复制
/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。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/967766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档