アサーションと制約


11

構成ファイルを作成するためのテンプレートを作成しています。このファイルを使用するサービスは、識別子の長さに制限を設けています。

識別子がたとえば6文字より長い場合、サービスは構成の適用の途中で失敗し、ノードを不整合な状態のままにします。

アサーションを実行してデプロイメントトランザクションの失敗をトリガーし、ターゲットノードのサービスが正しく設定されないようにするにはどうすればよいですか?

私の特定の状況はソルトですが、他のシステムでも問題がどのように解決されるかを知りたいと思います。


まあシェフでは、rspecまたはfoodcriticのいずれかのリンティングルールを追加するか、レシピで識別子が一致することを確認します。saltのアイデアはありません。構成マネージャーごとに固有の固有性があるため、素朴な答えはないと思います
Tensibai

答えを少し具体的にします。
Michael Mol

現時点では、Saltstack + Jinjaソリューションに対する私の現在の考えは、存在できないファイルから読み取ろうとするマクロでしょう。他のレンダラーは異なる動作をします。たとえば、Pythonレンダラーは簡単です。単に例外をスローします。
Michael Mol

回答:


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の場合:解析フェーズで評価されるfail関数があり、サーバーで解析エラーが発生します(StackOverflowの質問を参照)

 if length($cluster_name) > 6 {
      fail("Cluster name is too long. Should be less than 6 chars.")
 }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.