Penegasan dan kendala

11

Saya sedang membangun template untuk membangun file konfigurasi, dan layanan yang mengkonsumsi file ini menempatkan batasan pada panjang pengidentifikasi.

Jika pengidentifikasi lebih panjang dari, katakanlah, 6 karakter, layanan akan mendapatkan bagian-jalan melalui penerapan konfigurasi, gagal, dan meninggalkan node dalam keadaan tidak konsisten.

Bagaimana saya bisa melakukan pernyataan untuk memicu kegagalan transaksi penempatan, mencegah layanan node target dari salah konfigurasi?

Keadaan khusus saya adalah Garam, tetapi saya ingin tahu bagaimana sistem lain memecahkan masalah juga.

Michael Mol
sumber
Nah di chef saya akan menambahkan aturan linting, baik rspec atau foodcritic atau memastikan pengidentifikasi cocok dalam resep. Tidak ada ide untuk garam, saya tidak berpikir ada jawaban gerenic karena setiap manajer konfigurasi memiliki kekhususannya sendiri
Tensibai
Saya akan mengedit jawabannya menjadi sedikit kurang spesifik.
Michael Mol
Saat ini, perenungan saya saat ini untuk solusi Saltstack + Jinja akan menjadi makro yang mencoba membaca dari file yang tidak ada. Penyaji lainnya akan bekerja secara berbeda. Penyaji Python, misalnya, akan sepele; cukup lempar pengecualian.
Michael Mol

Jawaban:

7

Dalam Ansible: Anda dapat menggunakan assertatau failmodul.

- 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

Dalam Puppet: ada fungsi gagal dievaluasi selama fase parsing yang menyebabkan kegagalan parsing di server (lihat pertanyaan tentang StackOverflow )

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