পুতুল: রিসোর্স সংজ্ঞায়িত করা হয়েছে কিনা তা পরীক্ষা করুন, বা এটি তৈরি করুন


14

আমি যদি অন্য একটি ফাইলে কোনও সংস্থানটি ইতিমধ্যে সংজ্ঞায়িত করা হয়, এবং তা তৈরি না করে তা পরীক্ষার কোনও উপায় বের করার চেষ্টা করছি? একটি দ্রুত উদাহরণ:

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

তবে - File[$local_container]সর্বদা সত্য বলে মনে হয়। এই কাজ করতে একটি উপায় আছে কি?

উত্তর:


10

এই কাজ করার ভাল উপায় puppetlabs থেকে ensure_resource ফাংশন ব্যবহার করে হয় stdlib

এটি কোনও সংস্থার ধরণ, শিরোনাম এবং বৈশিষ্ট্যের একটি তালিকা নেয় যা কোনও সংস্থানটিকে পরামিতি হিসাবে বর্ণনা করে।

বলুন আপনার কাছে কেবলমাত্র উত্স তৈরি করতে পরীক্ষার কেস রয়েছে যদি এটি ইতিমধ্যে বিদ্যমান না থাকে-

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

এটি অনেক পরিষ্কার মনে হয়, এইভাবে চেকমার্কটি পাস করে। টিপ জন্য ধন্যবাদ!
gnarf

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"ফাইলটি ইতিমধ্যে অন্য কোথাও সংজ্ঞায়িত করা হয় (যেমন এমন কিছু দ্বারা বলুন যা অনুমতি / মালিককে নিয়ন্ত্রণ করতে চেয়েছিল) আপনি একই উত্স দু'বার সংজ্ঞায়িত করতে পারবেন না।
gnarf
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.