পুতুলের শর্তসাপেক্ষে একটি ফাইল / ডির কীভাবে করবেন?


18

আমি পুতুলের মধ্যে একটি ফাংশন লেখার চেষ্টা করছি failযা উত্তীর্ণ ডিরেক্টরি পথের অস্তিত্ব না থাকলে একটি করবে।

if File["/some/path"]সর্বদা সত্য প্রত্যাবর্তন করে এবং if defined(File["/some/path"])সত্যিকারের উপস্থিতি কিনা তা নির্বিশেষে পুতুলের মধ্যে সংস্থান সংজ্ঞা দেওয়া থাকলে কেবল সত্যটি প্রত্যাবর্তন করে।

একটি সাধারণ ifবিবৃতি দিয়ে এটি করার কোন উপায় আছে ?

ধন্যবাদ


2
মনে রাখবেন: মাস্টারগুলিতে সংকলিত হয়ে উদ্ভাসিত হয়। তারা ক্লায়েন্ট সম্পর্কে জমা দেওয়া তথ্য ব্যতীত কিছুই জানে না। সুতরাং হয় এই তথ্য আছে এমন একটি তথ্য লিখুন, বা একটি পদক্ষেপ ফিরে নিয়ে যান এবং আপনি কী বাস্তবে সমাধান করার চেষ্টা করছেন তা আমাদের জানান যাতে আমরা যদি একটি বিবৃতি চেয়ে আরও ভাল পদ্ধতির সাথে আসতে পারি।
ডেনিস কারসেমেকার

উত্তর:


31

এর জন্য কার্যকরভাবে: একটি এক্সিকিউটিভ "টেস্ট" এ কেবলমাত্র ব্যবহার করুন এবং আপনার সম্পাদনা করতে চান এমন আপনার ক্রিয়ায় এটির প্রয়োজন:

exec {"check_presence":
  command => '/bin/true',
  onlyif => '/usr/bin/test -e /path/must/be/available',
}

whatever {"foo...":
  .....
  require => Exec["check_presence"],
}

5
ওহ এটি অশুভ, আমি এটি পছন্দ করি :-)
ডেনিস কার্সেমেকার

1
আরও সহজ হতে পারে: এক্সিকিউট {"টেস্ট-ই / পাথ / অবশ্যই / হতে / উপলব্ধ":}
ডেনিস কার্সেমেকার

1
ধন্যবাদ। এটি একটি একক দির চেকের জন্য দুর্দান্ত কাজ করে। যাইহোক, আমি ডিরেক্টরিগুলির একটি অ্যারে যাচাই করার চেষ্টা করছি ... আমি যদি এটি কোনও ফাংশনে যুক্ত করি তবে আমি একটি 'পুনরায় ঘোষিত করতে পারি না' ত্রুটি পেয়েছি।
ddario

6
দুর্দান্ত ধারণা, তবে এর অর্থ হ'ল প্রতিটি পুতুলের চালনায় "এক্সিকিউট [চেক_প্রিজারেন্স] / রিটার্নস: সাফল্যের সাথে মৃত্যুদন্ড কার্যকর করা" বিজ্ঞপ্তি থাকবে যা সত্যিই বিরক্তিকর! আরও ভাল হবে: এক্সিকিউটিভ check 'চেক_প্রেজেন্সি': কমান্ড => '/ বিন / মিথ্যা', যদি না => '/ ইউএসআর / বিন / টেস্ট-ই / পাথ / আবশ্যক / হতে / উপলভ্য হয়',} এটি একই কাজ করবে তবে পথটি আসলে উপস্থিত না হলে কেবল একটি ত্রুটি / বিজ্ঞপ্তি তৈরি করবে।
S0me0ne

2
"প্রয়োজনীয়" ব্যর্থ হওয়ার কারণের যে কোনও কারণেই ব্যর্থতা নির্ভর করে যা কেবল ব্যর্থতা অবলম্বন করে যা কেবলমাত্র ব্যবহার করা বা না করা হিসাবে ত্রুটি দেয় ... সুতরাং প্রযুক্তিগতভাবে এটি কার্যকর হয় তবে আপনি আপনার পুতুল লগগুলিতে লগিন প্রচুর ত্রুটি পেয়ে যাবেন ...
ডেভিড গার্ডনার

0

ডিরেক্টরী উপস্থিত না থাকলে কীভাবে মডিউলটি চালানো থেকে রক্ষা করা যায় তা নির্ধারণ করতে আমারও সমস্যা হচ্ছিল। এটিই আমি খুঁজে পেয়েছি যা আমার জন্য কাজ করেছিল।

exec { 'module_name':
   command => "command to run with variables", # Double quotes for Variable interpolation
   path   => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:",
   onlyif => 'test -d /mydirectory',
   }

পথটি যুক্ত করা আমার পক্ষে সত্যই কৌশলটি করেছিল। কোনও কারণে যদি আমি পরীক্ষা কমান্ডের পথটি যুক্ত করি তবে /bin/testএটি ঠিক কাজ করে বলে মনে হয় না।

আশা করি এটি অন্যদের যারা একই সমস্যা হতে পারে তাদের সহায়তা করে।


0

আপনি এর জন্য অন্তর্নির্মিত ফাংশন ফাইন্ডফাইলেট () ব্যবহার করতে পারেন ... ফাইল / পাথ উপস্থিত না থাকলে এবং স্ট্রিং উপস্থিত থাকলে এটি অপরিবর্তিত ফিরে আসে।

https://puppet.com/docs/puppet/5.5/function.html#findfile


1
এটি কেবলমাত্র মাস্টারে চালিত হবে এবং এটি মডিউলগুলিতে ফাইলগুলি সন্ধান করার জন্য।
bodgit

ধন্যবাদ, তবে আপনি এটি ওএস-এ পূর্ণ পথ সরবরাহ করে ফাইলগুলি সন্ধান করতেও এটি ব্যবহার করতে পারেন নাকি?
মাইক

কেবলমাত্র সেই মেশিনেই যেখানে ক্যাটালগটি সংকলিত হচ্ছে, অর্থাৎ মাস্টার।
11:48

হ্যা, তা ঠিক.
মাইক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.