টেমপ্লেট ইউনিট ফাইল তৈরি করতে সিস্টেমড ইউনিট ফাইলকে ওভাররাইড করা সম্ভব?


8

আমি জানি যে সিস্টেমেড সার্ভিস কনফিগারেশন / আচরণকে প্রভাবিত করার জন্য প্যাকেজ সরবরাহকৃত ইউনিট ফাইলকে ওভাররাইড করার জন্য একটি দুর্দান্ত প্রক্রিয়া সরবরাহ করে। এটি সাধারণত নীচের কমান্ডটি ব্যবহার করে করা হয়

sudo systemctl edit <unitfile>

একটি ওভাররাইড কনফারেন্স ফাইল তৈরি করতে

/etc/systemd/system/<unitfile.d>/

সিস্টেমেড একটি টেম্পলেট ইউনিট ফাইল সংজ্ঞায়িত করার জন্য একটি পৃথক প্রক্রিয়াও সরবরাহ করে এবং রানটাইমের ক্ষেত্রে উদাহরণ-নির্দিষ্ট ইউনিট তৈরি করার জন্য এটি ইনস্ট্যান্টিয়েট করে। এই হিসাবে টেমপ্লেট ফাইল নামকরণ প্রয়োজন

<servicename>@.service

এবং তারপরে এটি ইনস্ট্যান্ট করা

systemctl start <servicename>@<instancename>

এখন, আমার একটি পরিস্থিতি রয়েছে যেখানে আমি একাধিক ইউনিট উদাহরণ হিসাবে প্যাকেজ সরবরাহিত পরিষেবা চালাতে চাই। আমি আমার নিজস্ব টেম্পলেট ইউনিট ফাইল তৈরি করা এড়াতে চাই, তাই আমি চেষ্টা করছি যে প্যাকেজ-সরবরাহিত ইউনিট ফাইলটি টেমপ্লেট ইউনিট ফাইল তৈরি করতে ওভাররাইড করা যায়।

যেহেতু, আমার উপলব্ধি অনুসারে, টেম্পলেট ইউনিট ফাইলটির একটি নামকরণ কনভেনশন রয়েছে যা নিয়মিত ইউনিট ফাইলের চেয়ে পৃথক, তাই আমি মনে করি যে আমি প্যাকেজ-সরবরাহিত ইউনিট ফাইলটিকে / etc / systemd / সিস্টেমে টেমপ্লেট ফাইলের সাথে ওভাররাইড করতে পারি না।

আমি যা করার চেষ্টা করছি তা অর্জন করার কোনও নির্ধারিত উপায় আছে?

নির্দিষ্ট পরিস্থিতি: গ্রাফানা প্যাকেজটি একটি গ্রাফানা-সার্ভার. সার্ভিস ইউনিট ফাইল ইনস্টল করে। আমি আমার মেশিনে গ্রাফানার দুটি উদাহরণ চালাতে চাই - একটি ডিইভি এবং এসটিজির জন্য একটি। আমি এটি করতে সক্ষম হয়েছি:

  • গ্রাফানা-সার্ভার. সার্ভিস ফাইলটি সংশোধন করুন (ফোল্ডারের অবস্থান এবং ফাইলের পাথ সেট করতে% I ব্যবহার করে)
  • পরিবর্তিত গ্রাফানা-সার্ভার.সার্ভিসকে গ্রাফানা-সার্ভার @ .সার্ভিসে নতুন নামকরণ করুন
  • গ্রাফানার উদাহরণগুলি ব্যবহার করে শুরু করুন:

    sudo systemctl start grafana-server@dev
    

    এবং

    sudo systemctl start grafana-server@stg
    

যাইহোক, এটি গ্রাফানা প্রদত্ত পরিষেবা ইউনিট ফাইলের লিঙ্কটি ভেঙে দেয় এবং আমি আপগ্রেড করার সময় যদি তারা পরিষেবা ফাইলটি বাড়ায় তবে আমার এই ক্রিয়াকলাপটি আবারও করতে হবে। আমার উদ্দেশ্য হ'ল এই প্রত্যক্ষ নির্ভরতা এড়ানো এবং পরিবর্তে এটিকে ওভাররাইড নির্ভরতাতে রূপান্তর করা।

কোন চিন্তা?

উত্তর:


6

নীচের উভয় বিকল্পের জন্য, প্রথমে গ্রাফানা-সার্ভার.সার্ভিসকে (@ ছাড়াই) ওভাররাইড করুন /etc/systemd/systemএবং ExecStartএটিকে কিছুই শুরু করার জন্য দমন করুন (মনে করুন এটি ব্যবহার করে)। চালু /etc/systemd/system/grafana-server.service.d/10-disable-execstart.conf:

[Service]
ExecStart=
WorkingDirectory=/path/to/your/confdir

বিকল্প 1 - জেনেরিক উদাহরণগুলির সাথে ওভাররাইড করা

একটি তৈরি করুন grafana-server@.serviceনিম্নলিখিত কনফিগারেশন সঙ্গে আপনার সেটিংসে যে অনুরূপ [Unit]এবং [Service]:

[Unit]
PartOf=grafana-server.service
ReloadPropagatedFrom=grafana-server.service

এগুলি গ্রাফানা-সার্ভারটি আপনার সমস্ত উদাহরণ একসাথে পুনরায় আরম্ভ / স্টার্ট / বাঁধাই করা উচিত। জাদু খুব তথ্যসমৃদ্ধ করা হয় না, কিন্তু যদি আপনি করা <instance_name>.confআপনার ফাইল /path/to/your/confdir, ঐ সমস্ত উদাহরণ স্বয়ংক্রিয়ভাবেই আপনার আবদ্ধ হতে হবে!

বিকল্প 2 - প্যাকেজ কনফিগারেশনের জন্য নির্দিষ্ট দৃষ্টান্তগুলিকে ওভাররাইড করা

আপনি যদি প্যাকেজ পরিষেবা ফাইল থেকে সমস্ত আপডেটের সদ্ব্যবহার রাখতে চান তবে কাস্টম ইনস্ট্যান্স বিকল্পগুলি মূলত গ্রহণ করতে চান, জেনেরিক থেকে প্রতিটি উদাহরণের জন্য একটি প্রতীকী লিঙ্ক তৈরি করুন

/lib/systemd/system/grafana-server.service

প্রতি

/etc/systemd/system/grafana-service@<instance>.service

এবং তারপরে কেবলমাত্র সেই উদাহরণটির নির্দিষ্ট বিকল্পগুলি ওভাররাইড করুন

/etc/systemd/system/grafana-server@<instance>.service.d/99-my-options.conf

নিম্নলিখিত কনফিগারেশনটি এতে [Unit]এবং যুক্ত করার বিষয়ে নিশ্চিত [Service]হন 99-my-options.conf:

[Unit]
PartOf=grafana-server.service
ReloadPropagatedFrom=grafana-server.service

এটি প্রতিটি উদাহরণের জন্য সমস্ত grafana-server.serviceবিকল্প গ্রহণ করবে এবং 99-my-options.confফাইলের সমস্ত বিকল্পের সাথে সেগুলি ওভাররাইড করবে এবং গ্রাফানা-সার্ভার.সার্ভেসে স্টার্ট / স্টপ / পুনঃসূচনা ক্রিয়াকে আবদ্ধ করবে।

উভয় বিকল্পে, যদি আপনি চালান

systemctl start grafana-server.service

আপনার সমস্ত /path/to/confdir/<instance>.confফাইল যা ফাইল আছে তা শুরু হয়ে যাবে। একই ক্ষেত্রে প্রয়োগ হয় stopএবং restartআপনি সর্বদা তাদের grafana-server@<instance>পরিষেবার নাম ব্যবহার করে স্বতন্ত্রভাবে পরিচালনা করতে পারেন ।

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