11

I'm constructing a template to build a configuration file, and the service that consumes this file places constraints on identifier lengths.

If an identifier is longer than, say, 6 characters, the service will get part-way through applying the configuration, fail, and leave the node in an inconsistent state.

How can I perform an assertion to trigger a deployment transaction failure, preventing the target nodes' service from being misconfigured?

My particular circumstance is Salt, but I would be curious to see how other systems solve the problem as well.

Michael Mol
  • 1,045
  • 1
  • 8
  • 19

1 Answers1

7

In Ansible: you can use assert or fail module.

- 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

In Puppet: there is fail function evaluated during parsing phase which cause parsing failure on server (see question on StackOverflow)

 if length($cluster_name) > 6 {
      fail("Cluster name is too long. Should be less than 6 chars.")
 }
Věroš K.
  • 256
  • 1
  • 3