断言和约束


11

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

如果标识符的长度超过例如6个字符,则该服务将在应用配置时中途通过,失败,并使节点处于不一致状态。

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

我的特殊情况是Salt,但是我很想知道其他系统也可以解决该问题。


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

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

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

Answers:


7

在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

在木偶:有失败解析这导致在服务器解析失败阶段期间评估函数(见在计算器上的问题

 if length($cluster_name) > 6 {
      fail("Cluster name is too long. Should be less than 6 chars.")
 }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.