কোনও সার্ভারে আর ব্যবহৃত হয় না এমন ভূমিকা থেকে জিনিসগুলি কীভাবে পরিষ্কার করবেন?


15

ধরুন আমার কাছে একটি হোস্ট আছে যা অন্যান্য জিনিসের মধ্যে একটি ওয়েব সার্ভার রয়েছে যেখানে সম্পর্কিত আনসিবল রোল ইনস্টল nginxকরে কিছু প্রয়োজনীয় কনফিগারেশন সম্পাদন করে /etc/nginxএবং ফায়ারওয়ালে 80 এবং 443 পোর্ট খোলে।

এক পর্যায়ে আমি চাইছি সেই নির্দিষ্ট হোস্টটি আর কোনও ওয়েব সার্ভার না হয়, কারণ কোনও কারণে আমি সেই পরিষেবাটি অন্যত্র সরিয়ে নিয়েছি। কেবল [webservers]ইনভেন্টরি থেকে সার্ভার অপসারণ করলে সার্ভারে আবর্জনা ফেলে দেওয়া হবে। আদর্শভাবে, আমি আনইনস্টল করতে nginx, /etc/nginxডিরেক্টরিটি (এবং কিছু অন্যান্য ডিরেক্টরি) সরিয়ে ফায়ারওয়ালে 80 এবং 443 বন্দর বন্ধ করতে চাই।

পুতুলের মধ্যে আমি এটি করতে পারি। একটি ওয়েব সার্ভার এমন একটি হোস্টের কনফিগারেশনে এরকম কিছু থাকবে:

class { 'nginx':
  ensure => present,
}

এবং আমাকে যা করতে হবে তা হ'ল "উপস্থিত" কে "অনুপস্থিত" দিয়ে প্রতিস্থাপন করা। যদি nginxবর্গ ভালো করে লেখা হয়, এটি পরিবর্তন আনা হয়েছে তা করেছে পূর্বাবস্থা হবে। (সাধারণত কোনও প্রশাসক "উপস্থিত" কে "অনুপস্থিত" এর সাথে প্রতিস্থাপন করবেন এবং পরে যখন তিনি নিশ্চিত হন যে সমস্ত আক্রান্ত হোস্ট কনফিগারেশনটি বাতিল করেছেন, তবে তিনি আইটেমটি ম্যানিফেস্ট থেকে সরিয়ে ফেলবেন।)

আরও কী, আমি মনে করি পুতুল ফায়ারওয়াল মডিউল স্বয়ংক্রিয়ভাবে ফায়ারওয়াল নিয়ম সরিয়ে দেয় যা ম্যানিফেস্টে আর খুঁজে পাওয়া যায় না; সুতরাং আমি মনে করি যে ফায়ারওয়ালের জন্য আপনার উপরের "অনুপস্থিত" জিনিসটি করার দরকার নেই, ফায়ারওয়াল যে কোনওভাবে স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।

আমি কীভাবে এই জিনিসগুলিকে উত্তরযোগ্যর সাথে অর্জন করতে পারি?


1
হাইপোথিটিকাল প্রশ্নগুলি এখানে আসলে আমার মনে হয় না, যদিও আপনার প্রশ্ন নিজেই যোগ্যতা ছাড়াই নয়। "আসুন ভান করুন ..." এর পরিবর্তে পুনরায় মন্তব্য করুন এবং উদাহরণস্বরূপ বলুন "পুতুলের মধ্যে আমি একটি সার্ভারের ভূমিকা পরিবর্তন ensure => present করতে ensure => absentএবং এনগিনেক্স আনইনস্টল করতে পারি যা পূর্বে ইনস্টল করা হয়েছিল যা পরিবর্তিত হয়ে যা হবে ... উত্তরীয় দিয়ে কীভাবে এটি করা যায়" ইত্যাদি আদর্শভাবে আপনি ইতিমধ্যে চেষ্টা করেছেন এমন কোনও কিছুর উদাহরণ সহ
এইচবিউইজন

2
আমি যুক্তি দিয়ে বলব যে উত্তরযোগ্য আসলে এই ধরণের জিনিসটির জন্য ডিজাইন করা হয়নি। এটি পুনরুত্পাদনযোগ্য, নিষ্পত্তিযোগ্য সার্ভারগুলিতে লক্ষ্যযুক্ত। আপনি যদি কোনও মেশিনকে আর ওয়েবসভার হতে না চান তবে আপনি এটি পুনরায় প্রকাশের পরিবর্তে কেবল এটি মুছুন (বা এটি মেঘের উদাহরণ হিসাবে এটি শেষ করুন)।
সেজেজোজ

@ সিজেজোজ উত্তরগুলির বিষয়ে আমি সবচেয়ে বেশি যা পড়েছি তা হল ওড়সন স্কট কার্ড কার্ডের ইন্ডার্স গেম এবং সিক্যুয়ালগুলিতে তবে আপনি যা বলছেন তা মেঘের অর্কেস্ট্রেশনে অনেক
অর্থবোধ করে

@ceejayoz: আমি বর্তমানে মাল্টি-সার্ভার সেটআপের জন্য উত্তরী ব্যবহার করি না, তবে ছোট স্বায়ত্তশাসিত সার্ভারগুলি কনফিগার করতে পারি। আমি মনে করি এটি একটি বৈধ ব্যবহার। সুতরাং একটি সার্ভারে nginx + django + PostgreSQL থাকতে পারে। পরে যদি আমি অন্য জায়গায় এনজিনেক্স বা এনগিনেক্স + জ্যাঙ্গো রাখার সিদ্ধান্ত নিই, পুরো সার্ভারটি মুছে ফেলা এবং ব্যাকআপ থেকে পোস্টগ্র্যাস এসকিউএল ফিরিয়ে আনার দরকার হয় তবে সাব-কাস্টমাল মনে হবে (ডাউনটাইমের উল্লেখ না করা)।
আন্তোনিস ক্রিস্টোফাইডস

উত্তর:


10

জবাবদিহি সঙ্গে, আপনি পুতুলের সাথে এটি কীভাবে করবেন তা থেকে আপনি আসলে কোনও আলাদাভাবে এটি করবেন না।

আপনার উদাহরণে যেখানে আপনি সেট করবেন

class { 'nginx':
  ensure => absent,
}

আপনি সেই পুতুল মডিউলের লেখকের উপর নির্ভর করছেন যে সমস্ত কিছু মুছে ফেলার জন্য প্রয়োজনীয় কোড লিখেছেন। প্রতিটি পুতুল মডিউলে এটি থাকে না।

একইভাবে, উত্তরযোগ্য সহ আপনার এমন ভূমিকা থাকতে পারে যা এটি ইনস্টল করার পাশাপাশি এটি অপসারণের উভয় প্রয়োজনীয় পদক্ষেপ রয়েছে। পার্থক্যটি কেবলমাত্র কীভাবে দু'জনকে ডাকা হবে is

একটি পদ্ধতি এমন হতে পারে যেখানে প্রশ্নে ভূমিকাটি আচরণকে টগল করার জন্য একটি পরিবর্তনশীলকে প্রকাশ করে। উদাহরণস্বরূপ, এই nginx ভূমিকা একটি ভেরিয়েবল নিতে পারে nginx_stateযা মানগুলি installedএবং গ্রহণ করে absent

ভূমিকাটির ক্ষেত্রে tasks/main.yml, ভূমিকা লেখকের কিছুটা থাকতে পারে ..

- include: install.yml
  when: nginx_state|default('present') == "present"

- include: uninstall.yml
  when: nginx_state|default('present') == "absent"

.. সংশ্লিষ্ট দুটি ইনস্টল / আনইনস্টল যুক্তিসঙ্গত-অন্তর্ভুক্ত ফাইলগুলির মধ্যে বিভক্ত হওয়া।

উত্তরযোগ্য ভূমিকাও বাসা বাঁধতে পারে। এটি করার অন্য উপায় হিসাবে, কোনও ভূমিকা লেখক উদাহরণস্বরূপ এর nginxভিতরে থাকা আরও একটি ভূমিকা সহ একটি ভূমিকা সরবরাহ করে uninstalled। আপনি তখন করতে পারেন:

- name: Uninstall nginx
  hosts: some_group
  roles:
    - nginx/uninstalled

জবাবদিহি, পুতুলের সাথে তুলনা করার সময়, জিনিসগুলি কীভাবে করা উচিত সে সম্পর্কে যুক্তিযুক্তভাবে কিছু কম নিয়ম এবং গাইডলাইন রয়েছে যাতে অভ্যাসগুলি বন্যের মধ্যে কিছুটা আলাদা হয়, তবে একই ধারণাটি প্রযোজ্য।


1
প্রযুক্তিগতভাবে আপনি সরাসরি ভূমিকাগুলিতে তর্কগুলিও পাস করতে পারেন, আমি নেস্টেড ভূমিকাটি ব্যবহার করার পরামর্শ দেব। প্লেবুকের কিছু ভূমিকা দেখে আমি সত্যিই অদ্ভুত দেখতে পাব, যে প্লেবুকের প্রয়োগের ক্ষেত্রে এটি বাস্তবে আনইনস্টল হয়ে যাবে যেহেতু ভেরিয়েবলগুলির মধ্যে এটির মতো সংজ্ঞা দেওয়া হয়েছে। নেস্টেড ভূমিকার মাধ্যমে এটি স্পষ্ট হওয়া এত বেশি পরিচ্ছন্ন বলে মনে হচ্ছে। প্রযুক্তিগতভাবে ভূমিকার পক্ষে যুক্তিগুলি পাস করা সম্ভব ( - { role: nginx, state: absent }) তবে এটি আমার কাছে অত্যন্ত ভারবস বলে মনে হয়। নেস্টেড ভূমিকা যা দেখেছি তার একমাত্র ত্রুটিটি হ'ল আমাকে পিতা-মাতার কাছ থেকে ডিফল্ট ভার্স লিঙ্ক করা দরকার।
bogdan.mustiata

roles: -nginx/uninstalledকাজের মতো কিছু করার জন্য আপনার কী করা দরকার ? আমি সমস্ত জায়গা জুড়ে দেখেছি, তবে বাসা বাঁধার ভূমিকাতে এমন কোনও ডকুমেন্টেশন খুঁজে পাচ্ছি না যা আমাকে এটি করতে দেয়।
সামগ্রিক

1

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

আপনি যদি অন্য উদ্দেশ্যে এইটিকে "পুনরায় কনফিগার" করতে চান তবে আপনাকে একটি নতুন প্লেবুক তৈরি করতে হবে যা প্রয়োজনীয় সাফ কাজগুলি সম্পাদন করে।

যতদূর আমি সচেতন, সমস্ত উত্তরীয় প্যাকেজিং মডিউলগুলিstate=absent আপনার সার্ভারে কোনও প্রদত্ত প্যাকেজ ইনস্টল করা হয়নি তা নিশ্চিত করতে সমর্থন করে। অতিরিক্তভাবে, aptমডিউলটির purge=yesপ্যারামিটার রয়েছে যা কোনও অবশিষ্ট কাস্টমাইজড কনফিগারেশন ফাইল সাফ করবে।

80 টি পোর্ট ফায়ারওয়াল রয়েছে তা নিশ্চিত করার জন্য আপনি কাজগুলিও তৈরি করতে পারেন। তবে, যেহেতু সেই বন্দরে আপনার কোনও প্রক্রিয়া চলবে না, ফায়ারওয়াল এটি আপনার সার্ভারের সুরক্ষায় কোনও তাত্পর্য ফেলবে না।


এটি যুক্ত করার জন্য, আমি সেই চরিত্রে বেশিরভাগ নাটক state=absentযুক্ত করতে পারছিলাম । আপনার পক্ষে থাকা কনফিগারেশনের বেশিরভাগ সংখ্যক পরিবর্তন মুছে ফেলা বা পূর্বাবস্থায় ফেরানোর পক্ষে একটি ভাল সুযোগ রয়েছে। ভূমিকা কতটা বড় তার উপর নির্ভর করে এটি পরীক্ষার জন্য সত্যিকারের পিআইটিএ হতে পারে।
ক্রিস্টোফার কারেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.