কোনও ডিরেক্টরিতে একাধিক ফাইলগুলি সমস্ত সংজ্ঞা না দিয়ে উপস্থিত রয়েছে তা নিশ্চিত করার জন্য কি পুতুল ব্যবহার করা সম্ভব?


8

আমার কাছে বেশ কয়েক'শ ওয়ান-অফ সার্ভার রয়েছে যার বিভিন্ন কনফিগারেশন ফাইল রয়েছে যা একটি ডিরেক্টরিতে উপস্থিত থাকা প্রয়োজন। ফাইলগুলির অনুলিপি পুতুল মাস্টারে থাকে।

আমার ক্লাসগুলির মধ্যে একটিতে আমার কাছে কনফিগারেশনের একটি ডিফল্ট সেট থাকে যা সর্বদা নোডে ধাক্কা লাগে, যেমন:

file { "/etc/someprogram/config/000-default":
  ensure => "present",
  owner => "root",
  group => "root",
  mode =>  0764,
  source => "puppet:///modules/someprogram/000-default",
}

আমি যা পেতে চাই তা হ'ল কিছু:

$filearray = directory listing of /etc/puppet/modules/someprogram/files/$fqdn
with each file as an element into array

$filearray.each(
file { "/etc/someprogram/config/$filename":
  ensure => "present",
  owner => "root",
  group => "root",
  mode =>  0764,
  source => "puppet:///modules/someprogram/files/$fqdn/$filename",
}
)

আমি পুতুলের সাথে খুব বেশি পরিচিত নই তবে আমি ছাপ পাচ্ছি যে এটি করার কোনও উপায় নেই।


1
আপনি recursively ডিরেক্টরির মধ্যে এই বসবাস (ব্যবস্থাপনা দিয়ে ঠিক হবে recurse => trueউপর fileটাইপ) পরিবর্তে একটি পৃথক সম্পদ হিসেবে প্রতিটি ফাইল প্রকাশক?
শেন ম্যাডেন

উত্তর:


8

আপনি এটি দিয়ে যা চেষ্টা করছেন তা করতে পারেন:

file { "/etc/someprogram/config":
    ensure => directory,
    recurse => remote,
    source => "puppet:///modules/someprogram/files/$fqdn"
    #Other options
}

এটি etc fqdn- এ সমস্ত ফাইলকে / etc / someprogram / config এ অনুলিপি করবে, ওভাররাইটিং যদি তারা ইতিমধ্যে বিদ্যমান থাকে।


1
এছাড়াও recurse => remoteজিজ্ঞাসা করা ডিরেক্টরিতে স্থানীয় ফাইল রয়েছে যা পুতুল সার্ভার দ্বারা চালিত নয় তা একবার দেখুন।
জোরেডেচে

এটি একটি ভাল টিপ, আমি জানতাম না যে এটি অনুমানের সাথে যুক্ত হয়েছিল, এটি প্রতিফলিত করতে মূল সম্পাদিত।
মাংসফ্ল্যাগ

3

আপনি যদি পুরো ডিরেক্টরিটি পুনরাবৃত্তি না করে ডিরেক্টরিতে একাধিক ফাইল সংজ্ঞায়িত করতে চান তবে আপনি একটি অ্যারে ব্যবহার করতে পারেন - এটির মতো:

$myfiles = [ "/my/dir/file1", "/my/dir/file2", ]
file { $myfiles:
    ensure => "present",
    owner  => "root",
    group  => "root",
    mode   =>  0644,
    source => "puppet:///modules/someprogram/$fqdn/$name",
}

অবশ্যই, "/ আমার / দির" বা প্রচুর ফাইলগুলির দীর্ঘ পথ সহ, এটি কিছুটা অস্বাস্থ্যকর হয়ে উঠবে, সেক্ষেত্রে ডিরেক্টরি ডিরেক্টরি অন্তর্ভুক্ত করে এমন একটি সংজ্ঞা তৈরি করা ভাল এবং আপনি কেবল অ্যারের পাশ দিয়ে যান d এটি ফাইল নাম।


aliasআপনার ফাইলটিতে সেট থাকলে দুর্ভাগ্যক্রমে এটি কাজ করে না : /
cweiske

1
দেখে মনে হচ্ছে আপনার কাছে টাইপ-মাইফিলস -> $ ফাইল রয়েছে
ফ্যাব্রিজিও রেগিনি

1
এটি কাজ করবে না। আপনি $nameএখানে উল্লেখ করতে পারবেন না । এটি কেবলমাত্র এটি কোনও সংজ্ঞায়িত প্রকারের হলে কাজ করে।
দুর্বল

1

আমি কীভাবে এটি করি তার একটি উদাহরণ এখানে দেওয়া হয়েছে:

file {
        [
        '/sys/block/sda/queue/scheduler',
        '/sys/block/sdb/queue/scheduler',
        '/sys/block/sdc/queue/scheduler',
        '/sys/block/sdd/queue/scheduler',
        '/sys/block/sde/queue/scheduler',
        '/sys/block/sdf/queue/scheduler'
        ]:
  ensure  => 'file',
  content => 'deadline',
  group   => '0',
  mode    => '644',
  owner   => '0',
  type    => 'file',
}

উপরের উদাহরণে, আমি পুতুলের মাধ্যমে প্রদত্ত সার্ভারে প্রতিটি ডিস্কের জন্য আমি / ও সময়সূচী নির্ধারণ করছি।

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