我在homelab中使用Saltstack,并且在测试它们时,我经常发现自己检查了轻微破碎的规则。我希望能够检查它们的有效性,或者在本地和Jenkins实例中对它们进行检测,但是我找不到任何有关我如何这样做的文档。有什么我失踪?Linting盐状态没有运行它
回答
语法问题在Salt中是多层次的(例如Jinja - > YAML - > state function args),并且没有工具来覆盖它们。
基于this related issue快速答案是触发多层解析:
salt-call state.show_highstate | tee highstate.output.yaml
salt-call state.show_sls [state_id] | tee state_id.output.yaml
的show_*
功能显示状态的数据作为仆从执行之前看到它。
在仆从一侧使用salt-call
(而不是主控方的salt
)通常会提供更好的调试选项 - 这主要是一种偏好。
的问题也可能是支柱或谷物(检查所有必需的数据被编译并存在预期):
salt-call pillar.items | tee pillar.output.yaml
salt-call grains.items | tee grains.output.yaml
就像@cyfur01 already mentioned,直接运行状态(与测试模式与否)是最后一个步骤来解决:
salt-call state.highstate test=True | tee highstate.output.yaml
salt-call state.sls [state_id] test=True | tee state_id.output.yaml
盐状态支持testing interface。例如:
salt '*' state.highstate test=True
这应该运行状态,并告诉你的一切,他们会做实际上不改变任何东西 - 实际上这是一个预演。虽然它不是一个直接的工具,但它确实证明了Salt能够解析和运行所有内容。
正是我之后,谢谢! –
的test
选项是沉重掉毛YAML CONFIGS。相反,尝试创建一个precheckin脚本,其中包括这样的事情:
salt-call state.highstate --file-root=$PWD --local --retcode-passthrough mocked=True
--file-root
允许你指定你目前 结账的位置--local
指示行动不应通过 主 运行
--retcode-passthrough
导致此命令退出非零,如果任何规则不能构造mock=True
处理所有t他规定,但不主动联系。这是2015.8.5中的一项新功能。另一种方法是运行state.show_highstate
这将适用于非常基本的设置,但不支持外部支柱(即使这只是同一结帐中的单独目录)。 – RCross
我一直在寻找了一段时间的好办法实现对盐的状态这个QA的东西,我最好的答案至今:
使用詹金斯启动工作(通过ssh)的基础上,开发的Git分支:
提供我们的实验室里LXC proxmox私有云(在我们的督促这样做完全一样的方式)
使用盐反应堆容器获得它的配置(因为它会在正式版)
使用testinfra到内置和config'ed容器
最后上运行单元测试,如果一切正常破坏容器如果不能保持它活着的早晨调试会话:)
我们还运行掉毛詹金斯的工作为:
for state in $(sudo /usr/bin/salt-call cp.list_states | awk '{print $2}' | grep -v "^top$"); do sudo /usr/bin/salt-call --retcode-passthrough state.show_sls ${state} ; done
我仍然有一些问题得到这最后linting工作正确的返回码(因为ssh等)。
这个过程作为一个整体保证:
- 我们的供应流程是OK
- 我们的代码库(州+柱)正按预期
- 我们可以合并开发与督促很好的信心比率
testinfra的真正好处是它可以使用salt连接后端,允许testinfra连接到con无需TAINER部署SSH密钥,或其他任何东西(因为我们使用的盐云初始配置)
更多关于testinfra salt connection backend,testinfra salt module。
这并不完美,但它仍然做得不错。
- 1. 没有它运行
- 2. 没能获得相机运行状态
- 3. linting后可以运行gulp任务吗?
- 4. 修复vim状态行,它没有颜色>和<区域
- 5. 在盐状态之间传递变量
- 6. 根据minion角色调用盐状态
- 7. 没有视图状态运行ASP.NET开启
- 8. 运行命令有状态1
- 9. 如何知道哪些爪牙无法执行盐业状态
- 10. Android状态栏notifcation - 想选择它运行一行代码
- 11. 只有密码的加密示例...没有盐。它工作吗?
- 12. 长时间运行状态
- 13. angular-ui-router运行状态
- 14. 盐堆列表中的所有可用状态
- 15. 如何运行一个目标只有它没有运行?
- 16. 尽管状态为正在运行,AsyncTask有时不会运行?
- 17. Java JButton它没有真正运行
- 18. Zookeeper:它可能没有运行
- 19. 有没有办法让移动Safari WebApp“忘记”它的状态?
- 20. SimpleSAMLPHP没有状态错误
- 21. KitKat没有translucide状态栏
- 22. 状态没有反应
- 23. setState没有更新状态
- 24. Skype的状态按钮显示状态,但如果我点击它没有连接到Skype的状态
- 25. 检查的ZooKeeper的状态,因为它正在运行
- 26. asp.net长时间运行的任务和检查它的状态
- 27. Resharper 5.0 testrunner运行测试,我没有要求它运行
- 28. django javascript代码没有运行,但它正在运行
- 29. 只运行python脚本,如果它没有运行
- 30. Codemirror-linting - 是否有事件可以明确触发linting?
@ cyfu01的回答非常好的扩展,非常感谢! –