問題タブ [chef-attributes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
chef-infra - Chef 属性ファイル
3 人のユーザーを作成し、それらをグループに追加して sudoers ファイルに書き込むためのシェフのレシピが書かれています。
私は Chef を初めて使用するので、このレシピに適した属性ファイル (/cookbook/User/attributes/default.rb) を作成する際に助けが必要です。知っていることはすべて試しましたが、何もうまくいきません。また、case ステートメントを属性ファイルに含めることができるかどうかも知りたいです。
注: Chef をローカル モードで実行しています。
chef-infra - 2 つのシェフ属性のマージ
リポジトリ内の 2 つの異なるファイルには、次の行が含まれています。
両方の属性をマージしたいと思います。どちらも同じ意味で使用されるため、単純に一方を他方と同じに設定するだけでは十分ではありません。私の最大の懸念は、誰かがこの間違いを犯すことです:
コードで両方の変数の値を設定するのを忘れることは、現在の構造では致命的な間違いです。オーバーライド階層を維持する方法で属性をマージして、library_cookbook_1 にロール レベルのオーバーライドがあり、library_cookbook_2 に環境レベルのオーバーライドがある場合、属性が 1 つの属性であるかのようにシェフがオーバーライドを処理するようにします。
理想的なマージ コードは次のようになります。
理想的には、各属性を同じものへのポインターにすることで、将来の呼び出しと割り当てが両方に適用されるようにします。
さて、明らかな答えは、単純に属性の 1 つをリファクタリングすることです。残念なことに、chef は属性のリファクタリングを困難にしています - 私たちは 10 の異なる環境、7 つの異なる役割、環境ごとに 20 のノードなどを持っています。
ruby - Chefコードで作成されたChefデータバッグアイテムの読み込み中にエラーが発生しました
この問題に関連して 2 つの質問があります。(解決済みの問題、以下に解決策を示します)
javaという名前のデータバッグがあります。以下に示すように、各ノードのホスト名に固有のデータバッグアイテムが含まれています
Chefコードを使用してデータバッグを作成できます
しかし、レシピの実行中に、jdk_version に値を代入しているコードで以下のエラーが発生します
質問 1: 上記のデータ バッグ項目の形式から、値を取得する方法を教えてください。
以下のようにデータ バッグを作成すると、jdk_version を取得できます。
上記の形式でデータバッグを作成するコード
質問 2: 以前のデータ バッグ アイテムの実装で間違っていることは何ですか?
解決した問題:: 以下の形式でデータ バッグ アイテムを作成できるようになり、データを正常に取得できるようになりました
データ バッグ アイテム ハッシュの作成中に、jdk_version とその値に "[]" の代わりに "{}" 中かっこを追加しました。
作業コードを以下に示します。
json - ノードにchef_typeは必須ですか?
Chef Server を使用するプロジェクトでは、次の概念を使用しています。
- ノード
- 役割
- 環境
環境とロールのjson ファイルは正常に見えます (それらには と がchef_type
ありますjson_class
):
ENV.json
/li>my_role.json
/li>
しかし、ノードは次のようになります (いいえchef_type
、いいえjson_class
):
my.machine.json
/li>
それは本物のChefノードですか?
また、次の優先順位を満たしていますか? ノード、ロール、および環境に
「通常」がある場合、次の優先順位 (上書き) 順序が適用されると想定しました:ノード > ロール > 環境、しかしそのドキュメントによると、優先順位はロール > 環境 > レシピであり、レシピはノードと同じ表セル。"key":"value"
ruby - Ruby ハッシュを定数値で初期化する
実際には、シェフの属性でそのような構造を使用したいと思います。そこでは、定数で構造を初期化し、それを変更します
init_value にも が含ま["a"]["x"] = "y"
れるようになったので、新しい値を準備すると
prepare["a"]
キーが含まれています["b", "x", "y"]
。
prepare["a"]
最後のステップで2 つのキーのみが含まれるように、定数を引用せずに定数で準備を初期化するにはどうすればよい["b","y"]
ですか?