Twierdzenia i ograniczenia

11

Tworzę szablon do utworzenia pliku konfiguracyjnego, a usługa korzystająca z tego pliku nakłada ograniczenia na długości identyfikatorów.

Jeśli identyfikator jest dłuższy niż, powiedzmy, 6 znaków, usługa przejdzie częściowo przez zastosowanie konfiguracji, zakończy się niepowodzeniem i pozostawi węzeł w niespójnym stanie.

Jak mogę wykonać asercję, aby wywołać błąd transakcji wdrożenia, zapobiegając błędnej konfiguracji usługi węzłów docelowych?

Moją szczególną okolicznością jest sól, ale byłbym ciekawy, jak inne systemy rozwiązują problem.

Michael Mol
źródło
Cóż, w szefie kuchni dodam regułę kłaczków, albo rspec, albo foodcritic, lub upewnię się, że identyfikator pasuje do przepisu. Nie mam pomysłu na sól, nie sądzę, że istnieje jakaś gereniczna odpowiedź, ponieważ każdy menedżer konfiguracji ma swoją własną specyfikę
Tensibai
Przeredaguję odpowiedź, aby była nieco mniej szczegółowa.
Michael Mol
W tej chwili moją obecną kontemplacją rozwiązania Saltstack + Jinja byłoby makro, które próbuje odczytać z pliku, który nie może istnieć. Inne renderery działałyby inaczej. Na przykład mechanizm renderujący w języku Python byłby trywialny; po prostu rzuć wyjątek.
Michael Mol

Odpowiedzi:

7

W Ansible: możesz użyć assertlub failmoduł.

- 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

W Lalek: jest nie funkcję oceniane podczas parsowania fazę które powodują analizowania awarii na serwerze (patrz pytanie na StackOverflow )

 if length($cluster_name) > 6 {
      fail("Cluster name is too long. Should be less than 6 chars.")
 }
Věroš K.
źródło