我正在构建用于构建配置文件的模板,使用该文件的服务对标识符的长度施加了约束。

如果标识符长于例如6个字符,则该服务将获得一部分

如何执行断言以触发部署事务失败,从而防止目标节点的服务配置错误?

如何通过应用配置失败,使节点处于不一致状态? br />
我的特殊情况是Salt,但是我很想知道其他系统也能解决问题。

评论

好吧,在厨师长中,我将添加一条规则规则,即rspec或foodcritic,或确保食谱中的标识符匹配。不用盐,我不认为会有一个普遍的答案,因为每个配置管理器都有自己的特异性

我将答案编辑得不太具体。

目前,我目前对Saltstack + Jinja解决方案的考虑将是一个尝试从不存在的文件中读取的宏。其他渲染器将以不同的方式工作。例如,Python渲染器将是微不足道的。只需抛出一个异常。

#1 楼

在Ansible中:您可以使用assertfail模块。

- name: "Make sure web_sites is dictionary"
  fail: msg="web_sites should be dictionary"
  when: web_sites is not dict  


- name: "cluster_name should be shorter than 6 chars"
  assert: 
       that: cluster_name|len <= 6


在Puppet中:在解析阶段评估了故障功能,这导致服务器上解析失败(请参阅有关StackOverflow的问题)

 if length($cluster_name) > 6 {
      fail("Cluster name is too long. Should be less than 6 chars.")
 }