如何解决saltstack 和常见的依赖关系
我试图了解 saltstack 是如何处理常见依赖项的。一个简单的例子(我有更复杂的例子来激发这个问题)是我的日志目录。我们的服务(我们安装的服务)登录到 /var/log/mycompany/
的子目录。这很简单,在 salt/system/init.sls
中我们指定了 /var/log/mycompany/
的创建。
现在其他模块依赖于此,因此我们不会在创建日志目录之前尝试启动服务。例如,telegraf 希望它的日志目录存在(或者,至少,当我写这段代码时,这是真的),所以我有这个:
/var/log/jellybooks/telegraf:
file.directory:
- user: telegraf
- group: telegraf
- mode: 755
- require:
- file: /var/log/mycompany
这在调用 state.highstate
时有效,但在调用 state.apply telegraf
时失败,因为即使 /var/log/mycompany
存在,也没有它的秘诀。
在最琐碎的层面上,这使调试变得更加困难。更微妙的效果有时会令人烦恼。当然 saltstack 必须有一个处理这个的模式,但我还没有找到它。 This issue 有点解决它,但它有点不同。
有什么建议吗?
解决方法
AFAIK,Salt 对状态系统没有 dependency
定义。
但是您可以通过使用 include
例如
# dir.sls
/var/log/mycompany:
file.directory:
- user: mycompany
# another.sls
include:
- dir
/var/log/jellybooks/telegraf:
file.directory:
- user: telegraf
- group: telegraf
- mode: 755
- require:
- file: /var/log/mycompany
当您调用 state.highstate
时,它将检索运行所需的所有内容然后执行它。所以它可能读取 salt/system/init.sls
并理解以供以后使用。
另一方面,state.apply telegraf
只会读取和执行 telegraf.sls
参考:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。