سؤال

هل من الممكن تحديد قيم السمات في JSON الخاص بـ Chef Solo؟لدي ملف Solo.json مع قائمة تشغيل وأرغب في تحديد السمات هناك.يبدو أن وثائق الشيف تشير إلى أنه من الممكن بالنسبة لي أن أفعل شيئًا مثل:

{
    "hostname": {
        "test": "value2"
    },
    "default_attributes": {
        "hostname": {
            "test": "value3"
        }
    },
    "override_attributes": {
        "hostname": {
            "test": "value4"
        }
    },
    "default": {
        "hostname": {
            "test": "value5"
        }
    },
    "run_list": [
        "recipe[hostname::default]"
    ]
}

ومع ذلك، كلما حاولت الوصول إلى القيمة في وصفتي:

p node['hostname']['test']

لقد حصلت للتو على القيمة المحددة في attributes/default.rb، وإذا لم أحددها هناك، سأحصل على قيمة صفر مرة أخرى.

هل هناك طريقة للإشارة إلى هذه القيم؟

هل كانت مفيدة؟

المحلول

المستوى الوحيد من السمات التي يمكنك تخزينها في بيانات العقدة هو normal, ، تتم إعادة ضبط كل شيء آخر في بداية التقارب وإعادة بنائه من الأدوار والبيئات وكتب الطبخ.تريد شيئًا يشبه هذا:

{
  "normal": {
    "hostname": {
      "test": "something"
    }
  },
  "run_list": [
    "recipe[hostname::default]"
  ]
}

نصائح أخرى

لقد حاولت استخدام المثال أعلاه لتعيين السمات في ملف JSON لـ Chef-solo، و "normal": {...} تم تجاهل الكتلة بالكامل.تمت قراءة قائمة التشغيل، لكن يبدو أن السمات لم تعمل أبدًا.

أمري هو:

chef-solo -c /path/to/config_file.rb -j /path/to/file.json

ملف JSON الخاص بي:

{
  "name": "my_json_file",
  "description": "JSON run-list and attributes.",
  "normal": {
    "my_cookbook": {
      "git_branch": "staging"
    }
  },
  "run_list": [
    "recipe[my_cookbook::recipe1]",
    "recipe[my_cookbook::recipe2]",
  ]
}

أثناء التقارب، عاد الشيف مباشرة إلى القيم الافتراضية داخل attributes/default.rb.هل يتم إدخال قيم JSON بشكل صحيح؟حتى الآن، كان الحل الوحيد الذي أمامي هو إنشاء وصفة جديدة لكل منها "git_branch": السمة التي أريد اختبارها باستخدام Chef-solo، وإضافة قائمة التشغيل المحدثة إلى ملف JSON مختلف.في الأساس، نسخ وصفة كاملة لتغيير وصفة واحدة node.normal['my_cookbook']['git_branch'] قيمة.وغني عن القول أن هذا لا ينبغي أن يكون حلا.

باستخدام الشيف 14.0.202

متابعة:

لا يعمل عدم تعيين مستوى أسبقية السمة داخل ملف JSON مع Chef Solo.يجب أن يبدو JSON مشابهًا لهذا:

{
  "name": "my_json_file",
  "description": "JSON run-list and attributes.",
  "my_cookbook": {
    "git_branch": "staging"
  },
  "run_list": [
    "recipe[my_cookbook::recipe1]",
    "recipe[my_cookbook::recipe2]",
  ]
}

لا يشمل "normal": {...} أو "default_attributes": {...}, ، وما إلى ذلك، سيمرر سمات ليستخدمها الشيف المنفرد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top