Утверждения и ограничения

11

Я создаю шаблон для создания файла конфигурации, а служба, которая использует этот файл, накладывает ограничения на длину идентификатора.

Если идентификатор длиннее, скажем, 6 символов, служба получит частичную обработку путем применения конфигурации, выйдет из строя и оставит узел в несогласованном состоянии.

Как я могу выполнить утверждение, чтобы вызвать сбой транзакции развертывания, предотвращая неправильную настройку службы целевых узлов?

Мое особое обстоятельство - Солт, но мне было бы любопытно посмотреть, как другие системы также решают эту проблему.

Майкл Мол
источник
Ну, в шеф-поваре я добавлю правило распечатки, или rspec или foodcritic, или обеспечу соответствие идентификатора в рецепте. Понятия не имею, я не думаю, что есть общий ответ, так как у каждого менеджера конфигурации есть своя специфика
Tensibai
Я отредактирую ответ, чтобы быть немного менее конкретным.
Майкл Мол
На данный момент моё нынешнее созерцание решения Saltstack + Jinja было бы макросом, который пытается прочитать файл, который не существует. Другие рендеры будут работать по-другому. Например, визуализация Python будет тривиальной; просто брось исключение.
Майкл Мол

Ответы:

7

В Ansible: вы можете использовать assertили failмодуль.

- 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.")
 }
Верош К.
источник