कठपुतली: परीक्षण यदि संसाधन परिभाषित है, या इसे बनाएं


14

यदि कोई संसाधन पहले से ही किसी अन्य फ़ाइल में परिभाषित किया गया है, और यदि इसे नहीं बनाते हैं, तो मैं परीक्षण का तरीका जानने की कोशिश कर रहा हूं? एक त्वरित उदाहरण:

  if File[$local_container] {
    alert("Testing - It existed $local_container")
  } else {
    file{ "$local_container":
      ensure => directory,
    }
  }

हालांकि - File[$local_container]हमेशा सच का मूल्यांकन करने के लिए लगता है। क्या इसे करने का कोई तरीका है?

जवाबों:


10

ऐसा करने का बेहतर तरीका यह है कि कठपुतली स्टैडलिब से ens_resource फ़ंक्शन का उपयोग किया जाए

यह एक संसाधन प्रकार, शीर्षक और विशेषताओं की एक सूची लेता है जो एक संसाधन को मापदंडों के रूप में वर्णित करते हैं।

यदि आपके पास पहले से मौजूद नहीं है तो संसाधन बनाने के लिए आपके पास परीक्षण का मामला है-

ensure_resource('package', 'test-pkg', {'ensure' => 'present'})

यह बहुत साफ लगता है, चेकमार्क को इस तरह से पारित करना। पारितोषिक के लिए धन्यवाद!
गनरफ

15

क्या आपका मतलब है "परीक्षण अगर एक संसाधन पहले से ही परिभाषित है "? यदि आप एक संसाधन (यानी, file {}आदि) को परिभाषित करते हैं, तो कठपुतली वही बनाएगी जो आप वर्णन कर रहे हैं यदि आपके पास पहले से मौजूद नहीं है (मान लें कि आप पास हैं ensure => present, तो निश्चित रूप से)।

यह जाँचने के लिए कि कैटलॉग में कोई संसाधन पहले से ही परिभाषित है या नहीं:

mark-draytons-macbook:~ mark$ cat test.pp 
file { "/tmp/foo": ensure => present }

if defined(File["/tmp/foo"]) {
  alert("/tmp/foo is defined")
} else {
  alert("/tmp/foo is not defined")
}

if defined(File["/tmp/bar"]) {
  alert("/tmp/bar is defined")
} else {
  alert("/tmp/bar is not defined")
}

mark-draytons-macbook:~ mark$ puppet test.pp 
alert: Scope(Class[main]): /tmp/foo is defined
alert: Scope(Class[main]): /tmp/bar is not defined
notice: //File[/tmp/foo]/ensure: created

नोट: defined()है पार्स क्रम पर निर्भर है


5
यह "पार्स ऑर्डर पर निर्भर करता है" भाग इसे लगभग बेकार बना देता है।
जॉरक्स

2

या फिर ....

unless File["${local_container}"] {
  file{ "${local_container}":
     ensure => directory,
  }
}

और उन उद्धरणों और घुंघराले ब्रेसिज़ पर नज़र रखें ...।


-2

बस,

file{ "$local_container":
  ensure => directory,
  replace => false,
}

नहींं, यदि "$local_container"फ़ाइल पहले से ही कहीं और परिभाषित की गई थी (जैसे किसी ऐसी चीज के बारे में जो अनुमतियों / स्वामी को नियंत्रित करना चाहती थी) तो आप एक ही संसाधन को दो बार परिभाषित नहीं कर सकते।
ग्वारफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.