আমি ঠিক একই সমস্যার সমাধান খুঁজে পাওয়ার চেষ্টা করেছি এবং এটি কিছুটা ভিন্ন পদ্ধতির গ্রহণ করা ভাল।
হোম ডিরেক্টরিটি স্পষ্টভাবে সংজ্ঞায়িত করুন, উদাহরণস্বরূপ:
user { $username:
comment => "comment",
home => "/home/${username}",
managehome => false,
# ...
}
যখন managehome
মিথ্যা হয়, হোম ডিরেক্টরি এমনকি তৈরি হয় না। সুতরাং আপনি এটি নির্দিষ্টভাবে সংজ্ঞায়িত করতে হবে। পুরো ব্যবহারকারীর জন্য একটি কাস্টম সংজ্ঞা তৈরি করা প্রায়শই সেরা:
define custom_user($username, $password) {
user { $username:
home => "/home/${username}",
password => $password,
# etc.
}
file { "/home/${username}":
ensure => directory,
owner => $username,
require => User[$username],
# etc.
}
}
আপনি আরও পরামিতি যুক্ত করতে পারেন, উদাহরণস্বরূপ $keyvalue
, এবং যদি সেই পরামিতিটি দেওয়া হয় তবে একটি কীফাইল তৈরি করতে পারেন।
আপনি একটি গ্লোবাল ভেরিয়েবল $home = "/home"
(ওএস নির্দিষ্ট, প্রয়োজন হলে) সংজ্ঞায়িত করতে এবং হোম ডির সাথে পেতে পারেন "${home}/${username}"
।
সম্পাদনা: ব্যবহারকারী-নির্দিষ্ট হোম ডিরেক্টরিগুলি সংজ্ঞায়িত করতে হ্যাশ ব্যবহার করা
আরও সাম্প্রতিক পুতুল সংস্করণ (> = 2.6) সমর্থন হ্যাশ। username => /path/to/home
প্রতিটি ব্যবহারকারীর জন্য ম্যাপিংস যুক্ত একটি হ্যাশ সংজ্ঞায়িত করা সম্ভব হবে :
$home = {
normal_user => '/home/normal_user',
backup => '/var/backup',
mysql => '/var/lib/mysql'
}
যে কোনও ব্যবহারকারীর জন্য, এর সাথে হোম ডিরেক্টরিটি পাওয়া সহজ $home['username']
।
ফ্যালব্যাক সহ হোম ডিরেক্টরি হ্যাশ
বেশিরভাগ সময়, হ্যাশটিতে ব্যবহারকারীর উপস্থিতি না থাকলে "ফ্যালব্যাক ডিফল্ট" থাকা ভাল। তাত্ত্বিকভাবে এটি সম্ভব, যদিও সিনট্যাক্সটি কিছুটা ক্রিপ্টিক এবং ফুলে যায়:
$home = { ... }
$default_home = '/home'
user {$username:
home => has_key($home, $username) ? {
true => $home[$username],
false => "${default_home}/${username}"
}
# ...
}