Твердження та обмеження


11

Я будую шаблон для створення файлу конфігурації, і служба, яка споживає цей файл, встановлює обмеження на довжину ідентифікатора.

Якщо ідентифікатор довший, скажімо, 6 символів, служба отримає частковий шлях, застосувавши конфігурацію, відмовить і залишить вузол у непослідовному стані.

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

Моя особлива обставина - Сіль, але мені було б цікаво побачити, як інші системи вирішують проблему.


Добре в шеф-кухаря я додам правило лінінгу, або rspec або foodcritic, або забезпечу відповідність ідентифікатора в рецепті. Не маю ідеї щодо солі, я не думаю, що є геренічна відповідь, оскільки кожен менеджер конфігурації має свою специфіку
Tensibai

Я відредагую відповідь, щоб бути трохи менш конкретною.
Майкл Мол

На даний момент моє поточне споглядання рішення Saltstack + Jinja - це макрос, який намагається прочитати з файлу, який не може існувати. Інші рендері працювали б інакше. Наприклад, ретранслятор Python був би тривіальним; просто киньте виняток.
Майкл Мол

Відповіді:


7

В Відповідь: ви можете використовувати 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.")
 }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.