2012-03-13 3 views
5

मैं शेफ में वातावरण का उपयोग कर रहा हूं, और मैं प्रति-पर्यावरण रन सूचियों का उपयोग करना चाहता हूं। समस्या यह है कि मैं खुद को दोहराना नहीं चाहता (जैसे मैं अब कर रहा हूं)। उदाहरण:शेफ: क्या मैं सामान्य प्रति-पर्यावरण रन सूची आइटम साझा कर सकता हूं?

{ 
    "name": "myapp", 
    "default_attributes": { 
    }, 
    "json_class": "Chef::Role", 
    "env_run_lists": { 
    "production": [ 
     # Has less packages because services are spread across specialized nodes 
     "role[base]", 
     "recipe[mysql::client]", 
     "recipe[myapp]" 
    ], 
    "staging": [ 
     # Has less packages because services are spread across specialized nodes 
     "role[base]", 
     "recipe[mysql::client]", 
     "recipe[myapp]" 
    ], 
    "development": [ 
     "role[base]", 
     "recipe[mysql::client]", 
     "recipe[myapp]", 
     "role[utility]", 
     "role[cache]" 
    ] 
    }, 
    "run_list": [ 

    ], 
    "description": "The myapp.com core application role", 
    "chef_type": "role", 
    "override_attributes": { 

    } 
} 

क्या कोई तरीका है जिससे मैं इसे दोहराने से बच सकता हूं?

 "role[base]", 
     "recipe[mysql::client]", 
     "recipe[myapp]", 

मैं सिंक से बाहर होने और तैनाती को तोड़ने से पर्यावरण चलाने वाली सूचियों से बचना चाहता हूं।

उत्तर

5

इस समय, नहीं। भूमिकाएं पूरी तरह से घोषणात्मक हैं और इस तरह गतिशील नहीं हैं। आप एक भूमिका निभा सकते हैं जिसमें उन तीन वस्तुओं को शामिल किया गया हो और प्रति पर्यावरण रन सूचियों में शामिल हो।

+1

मेरे प्रश्न का उत्तर देने के लिए बेहतर लड़के से नहीं पूछा जा सका - धन्यवाद! – Kenny

0

यह JSON में संभव नहीं हो सकता है, हालांकि यदि आप अपनी भूमिका को परिभाषित करने के लिए रूबी डीएसएल का उपयोग करते हैं तो यह संभव है।

name "myapp" 
description "Description of the role" 
base_run_list = [ "role[base]", "recipe[mysql::client]", "recipe[myapp]" ] 
env_run_lists "production" => base_run_list, "staging" => base_run_list , "development" => base_run_list + ["role[utility]", "role[cache]"] 

base_run_list आम व्यंजनों की सूची है:

यह अपनी भूमिका फ़ाइल तरह दिखाई देंगे की तरह है।

संबंधित मुद्दे