উত্তরযোগ্য: একটি হোস্ট একাধিক গ্রুপে উপস্থিত হয় এবং উভয় গ্রুপেরই একই কাজ থাকে; কোনও কাজ একবার চালানোর জন্য?


9

আমার কাছে একটি প্লেবুক রয়েছে যা দেখতে এরকম কিছু দেখাচ্ছে:

---
- hosts: group1
  roles:
    - role1
    - role2

- hosts: group2
  roles:
    - role2
    - role3

এখন বলুন আমার কাছে একটি হোস্ট ফাইল রয়েছে যার এন্ট্রি রয়েছে:

[group1]
host1.example.com

[group2]
host1.example.com

জবাবদিস্ট হোস্ট 1.example.com এর জন্য ভূমিকা 2 TWICE এ কাজগুলি পরিচালনা করবে কারণ এটি 2 টি গোষ্ঠীতে প্রদর্শিত হয় এবং প্রত্যেকেরই তাদের রোল 2 অর্পণ করা হয়েছে।

আমি উত্তরীকে কীভাবে উপলব্ধি করতে পারি যে এটির একই ভূমিকা দু'বার অন্তর্ভুক্ত রয়েছে এবং সুতরাং এটি কেবল একবার চালানো উচিত?


"রোল 1", "রোল 2" ইত্যাদির পরিবর্তে আমাদের প্রকৃত উদাহরণ দেওয়া আরও ভাল হবে, কারণ সম্ভবত আপনার এটি অন্যরকম করা উচিত। তবে এটি নির্ভর করে আপনি আসলে কী অর্জন করার চেষ্টা করছেন।
আন্তোনিস ক্রিস্টোফাইডস

উত্তর:


10

যেমনটি উল্লেখ করা হয়েছে, এটি নকশা দ্বারা। উত্তরীয় একবারে মাত্র একটি নাটক চালায়। আপনার প্লেবুক দুটি নাটক নিয়ে গঠিত (প্লেবুক ফাইল দ্বারা সংজ্ঞায়িত রুট-স্তরের YAML তালিকার দুটি আইটেম)। প্রথম নাটকটি গ্রুপ 1 এ রোল 1 এবং রোল 2 প্রয়োগ করে। সেই নাটকটি প্রথমে কার্যকর করে এবং কেবলমাত্র এটি শেষ হয়ে গেলেই দ্বিতীয় নাটকটি শুরু হয়। তবে জবাব নাটকগুলি একত্রে যুক্ত করার চেষ্টা করে না। সর্বোপরি, আপনি সম্ভবত ভূমিকা2 এর কাজগুলি দু'বার চালাতে চাইবেন।

সমস্যা সমাধানের জন্য, কয়েকটি উপায় রয়েছে যা আপনি এটিকে ঘিরে কাজ করতে পারেন এবং আপনি যেগুলি বেছে নিয়েছেন তা গোষ্ঠীগুলির এবং ভূমিকার বিশদগুলির উপর নির্ভর করবে।

যদি ভূমিকা 2 এর সমস্ত কাজ আদর্শবান হয়, অর্থাত্ যদি সেগুলি একাধিকবার চালানো যায় এবং প্রতিবার একই ফলাফলের সাথে শেষ করতে পারে তবে আপনি যা যা করছেন তা হ'ল সময় হ'ল, এবং ভূমিকাটি পুনরাবৃত্তি করা ঠিক আছে। ভূমিকাগুলি প্রয়োগ করতে যদি সত্যিই দীর্ঘ সময় লাগে বা যদি আপনি এটিকে আদর্শবান করতে না পারেন তবে নিম্নলিখিত ধারণাগুলি বিবেচনা করুন:


আপনি প্লেবুকটি তিনটি নাটকে বিভক্ত করতে এবং পৃথকভাবে ভূমিকা প্রয়োগ করতে পারেন:

---
- hosts: group1
  roles:
    - role1

- hosts: group1:group2
  roles:
    - role2

- hosts: group2
  roles:
    - role3

বা যদি আপনার ভূমিকাগুলি একত্রে গোষ্ঠীভুক্ত করা দরকার হয় তবে আপনি সার্ভারগুলির জন্য একটি তৃতীয় গোষ্ঠী তৈরি করতে পারেন যার জন্য তিনটি ভূমিকা রয়েছে। এগুলি আপনাকে অন্য দুটি গ্রুপের বাইরে নিয়ে যাওয়ার দরকার নেই। আপনি নিজের ইনভেন্টরি ফাইলে এইভাবে গ্রুপ তৈরি করতে পারেন:

[group1and2:children]
group1
group2

তারপরে আপনার প্লেবুকে আপনি আবার তিনটি নাটকে বিভক্ত হতে পারেন তবে পুনরায় চলমান ভূমিকা এড়াতে তৃতীয় গোষ্ঠীটি ব্যবহার করুন:

---
- hosts: group1:!group1and2
  roles:
    - role1
    - role2

 - hosts: group1and2
   roles:
     - role1
     - role2
     - role3

 - hosts: group2:!group1and2
   roles:
     - role2
     - role3

এটি বেশ কুৎসিত তবে এটি কিছু ক্ষেত্রে কার্যকর হতে পারে।


ধন্যবাদ, আমি মনে করি আমি বিকল্পের বিভিন্নতা (2) নিয়ে যাব - আমি আমার গ্রুপগুলি এবং ভূমিকাগুলি আমার সার্ভারগুলিকে একসাথে গ্রুপ করার জন্য আরও দানাদার করব।
আসফ্যান্ড কাজী

আমি যদি ভেরিয়েবলের মাধ্যমে হোস্টগুলিকে {{host1}} এবং {{host2} as হিসাবে কল করি, তবে আমি কীভাবে তাদের একসাথে রাখতে পারি?
বিএমডাব্লু

আপনি যদি ডকুমেন্টেশন বিভাগের সন্ধান করেন: সাধারণ নিদর্শন
সহপ Asci

3

এটি নকশা দ্বারা। যাওয়ার একমাত্র উপায় হ'ল কেবলমাত্র একটি নির্দিষ্ট গ্রুপে কেবল একটি প্লেবুকে রোল 2 প্রয়োগ করা এবং এই জাতীয় গোষ্ঠীর সাধারণ সদস্য থাকতে পারে এমন একটি গোষ্ঠীর অন্য কোনও প্লেবুকে রোল 2 ব্যবহার না করা।

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