কম্পিউটার

DevStack ছাড়া জীবন:OSA-এর সাথে OpenStack ডেভেলপমেন্ট

আপনি যদি একজন OpenStack অবদানকারী হন, আপনি সম্ভবত আপনার বেশিরভাগ কাজের জন্য DevStack-এর উপর নির্ভর করবেন। DevStack একটি ডি-ফ্যাক্টো প্ল্যাটফর্ম যা অবদানকারীরা বিকাশ, পরীক্ষা এবং পর্যালোচনার জন্য ব্যবহার করে এবং দীর্ঘকাল ধরে রয়েছে। এই নিবন্ধে, আমি আপনাকে একটি প্রকল্পের সাথে পরিচয় করিয়ে দিতে চাই যার আমি একজন অবদানকারী, যাকে বলা হয় ওপেনস্ট্যাক-অ্যান্সিবল। গত কয়েক মাস ধরে, আমি এই প্রকল্পটি OpenStack আপস্ট্রিম ডেভেলপমেন্টের জন্য DevStack-এর বিকল্প হিসেবে ব্যবহার করছি, এবং অভিজ্ঞতা খুবই ইতিবাচক।

ডেভস্ট্যাকের সাথে কি ভুল?

আমি ওপেনস্ট্যাক-অ্যান্সিবল সম্পর্কে অনুসন্ধান করার আগে, আমি সংক্ষিপ্তভাবে আলোচনা করতে চাই যে কারণগুলি আমাকে ডেভস্ট্যাকের বিকল্প খুঁজতে অনুপ্রাণিত করেছিল। সামগ্রিকভাবে, DevStack একটি ভাল বৃত্তাকার প্রকল্প, কিন্তু কিছু স্থাপত্যগত সিদ্ধান্ত আছে যা আমাকে বিরক্ত করে।

প্রথমত, DevStack একটি মনোলিথিক ইনস্টলারের সাথে আসে। একটি ইনস্টল করার জন্য, আপনি stack.sh চালান এবং এটি আপনার কনফিগার করা সমস্ত মডিউল ইনস্টল করে৷ আপনি যদি পরে মডিউলগুলি যোগ করতে বা সরাতে চান তবে একমাত্র বিকল্প হল unstack.sh চালানো। সবকিছু আনইনস্টল করতে, এবং তারপর stack.sh পুনরায় চালান আপডেট করা কনফিগারেশন সহ। কয়েকবার, যখন আমি একটি মডিউলে সোর্সকোড পরিবর্তন করেছি, তখন আমি অসাবধানতাবশত মডিউলটিকে অনিয়মিত উপায়ে কাজ করতে দিয়েছিলাম। যদি আমি সেই পরিস্থিতিতে থাকি, সবচেয়ে নিরাপদ বিকল্প হল এটি পুনরায় ইনস্টল করা, এবং DevStack এর সাথে এটি করার একমাত্র উপায় হল সবকিছু পুনরায় ইনস্টল করা।

DevStack সমস্ত মডিউলগুলির একটি উন্নয়ন ইনস্টলেশন সঞ্চালন করে, যা একটি পরিবেশ তৈরি করে যা উত্পাদন স্থাপনার থেকে খুব আলাদা। আমার মতে, একটি সঠিক উন্নয়ন পরিবেশে আমি যে মডিউলটি উন্নয়নের জন্য ইনস্টল করছি তা থাকবে, উৎপাদনের জন্য অন্য সবকিছু ইনস্টল করা আছে। ডেভস্ট্যাকের সাথে এটি করা সম্ভব নয়।

DevStack এর সাথে আমার আরেকটি সমস্যা ছিল তা হল একটি ধারাবাহিক অবস্থায় নির্ভরতা রাখার জন্য অবিরাম লড়াই। DevStack-এ, নির্ভরতাগুলি সমস্ত মডিউলের মধ্যে ভাগ করা হয়, তাই একটি মডিউলের জন্য নির্ভরতাগুলিকে সিঙ্ক করার একটি সাধারণ ক্রিয়া একটি চেইন প্রতিক্রিয়া সৃষ্টি করতে পারে যার জন্য আরও কয়েকটি মডিউল আপডেট করতে হবে। অনেকাংশে, সাম্প্রতিক ডেভস্ট্যাক রিলিজে পার-মডিউল ভার্চুয়াল এনভায়রনমেন্ট ব্যবহার করে এটি হ্রাস করা যেতে পারে, তবে, এর সাথেও, OS স্তরের প্যাকেজগুলি শেয়ার করা থাকে৷

ওপেনস্ট্যাক-অ্যানসিবল (OSA) কি?

ওপেনস্ট্যাক-অ্যান্সিবল প্রজেক্ট হল একটি র‍্যাকস্পেস ওপেন সোর্স উদ্যোগ যা ওপেনস্ট্যাক স্থাপন করার জন্য অ্যান্সিবলের শক্তি ব্যবহার করে। আপনি os-ansible-deployment নামে এই প্রকল্পের কথা শুনে থাকতে পারেন StackForge-এ এটি OpenStack বড় তাঁবুতে চলে যাওয়ার আগে।

DevStack-এর মতো, openstack-Ansible সমস্ত OpenStack পরিষেবা সরাসরি তাদের গিট রিপোজিটরি থেকে, কোনো ভেন্ডার প্যাচ বা অ্যাড-অন ছাড়াই স্থাপন করে। কিন্তু বড় পার্থক্য হল ওপেনস্ট্যাক-অ্যান্সিবল LXCcontainers-এ OpenStack পরিষেবাগুলি স্থাপন করে, তাই অ্যানোডে হোস্ট করা পরিষেবাগুলির মধ্যে সম্পূর্ণ OS স্তর এবং Python প্যাকেজ বিচ্ছিন্নতা রয়েছে৷

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

নিম্নলিখিত চিত্রটি একটি ওপেনস্ট্যাক-অ্যান্সিবল প্রাইভেটক্লাউডের গঠন দেখায়:

DevStack ছাড়া জীবন:OSA-এর সাথে OpenStack ডেভেলপমেন্ট

এটি দেখার পরে, আপনি সম্ভবত আপনার মাথা ঘামাচ্ছেন যে এই প্রকল্পটি কীভাবে আপস্ট্রিম ডেভেলপমেন্টের জন্য DevStack-এর সরলতার সাথে মেলে, এটি স্পষ্টভাবে মাল্টি-নোড প্রাইভেট ক্লাউডের দিকে ভিত্তিক। হতাশা কি না! পরবর্তী বিভাগে এটি কভার করুন।

OSA অল-ইন-ওয়ান

ওপেনস্ট্যাক-অনুসন্ধানযোগ্য প্রকল্পের অবদানকারীরা প্রতিদিনের কাজ এবং গেটিংয়ের জন্য একটি একক-নোড স্থাপনা ব্যবহার করে, কারণ এটি অনেক বেশি সুবিধাজনক এবং সম্পদ দক্ষ। স্থাপনার এই পদ্ধতির সাহায্যে ক্লাউড সার্ভার বা ভার্চুয়াল মেশিনে OSA দাঁড় করানো সম্ভব, তাই এই বৈশিষ্ট্যের সুবিধা নেওয়া এই প্রকল্পটিকে DevStack-এর সাথে তুলনীয় করে তোলে।

দুর্ভাগ্যবশত, OSA-এর একক-নোড স্থাপনার জন্য হোস্টের প্রয়োজনীয়তা DevStack-এর চেয়ে বেশি, প্রধানত কন্টেইনার পরিকাঠামো দ্বারা প্রবর্তিত ওভারহেডের কারণে। একটি ব্যবহারযোগ্য ইনস্টলেশনের জন্য, হোস্টের অবশ্যই 16GB RAM এবং 80GB ডিস্ক স্পেস থাকতে হবে। এই সময়ে, একমাত্র হোস্ট OS যেটি সমর্থিত তা হল Ubuntu14.04।

DevStack-এর উপরে OSA-এর একটি চমৎকার সুবিধা হল যে, কনটেইনারাইজড আর্কিটেকচারের জন্য ধন্যবাদ, এটি একক-নোড ইনস্টল করার সময়ও অপ্রয়োজনীয় পরিষেবা স্থাপন করতে পারে। একটি ডিফল্ট একক-নোড স্থাপনায়, গ্যালেরা, র‍্যাবিটএমকিউ, এবং কীস্টোন রিডানডেন্সির সাথে স্থাপন করা হয় এবং লোড ব্যালেন্স করার জন্য হোস্টে HAProxy ইনস্টল করা হয়।

আপনি আপনার হাত নোংরা পেতে প্রস্তুত? আপনার যদি একটি নতুন Ubuntu14.04 সার্ভারে অ্যাক্সেস থাকে যা উপরে উল্লিখিত স্পেসগুলি পূরণ করে, আপনি নিম্নলিখিত কমান্ডগুলি দিয়ে OSArepository ক্লোন করতে পারেন:

# apt-get -y install git
# git clone https://github.com/openstack/openstack-ansible /opt/openstack-ansible

আপনাকে এই ডিরেক্টরিতে প্রকল্পটি ক্লোন করার দরকার নেই। পরিবর্তে, আপনি যেখানে খুশি ক্লোনিট করতে পারেন।

এরপরে, একটি একক-নোড কনফিগারেশন ফাইল তৈরি করুন। ভাগ্যক্রমে, প্রকল্পটি একটি স্ক্রিপ্ট নিয়ে আসে যা আপনার জন্য এটি করে:

# cd /opt/openstack-ansible
# scripts/bootstrap-aio.sh

উপরের কমান্ডটি চালানোর পরে, ডিরেক্টরি /etc/openstack_deploy YAML ফর্ম্যাটে বেশ কয়েকটি কনফিগারেশন ফাইলের সাথে জনবহুল করা হবে৷ বিশেষ আগ্রহ হল ফাইল user_secrets.yml , এতে সমস্ত পাসওয়ার্ড রয়েছে যা আপনার ইনস্টলেশনে ব্যবহার করা হবে। এই পাসওয়ার্ডগুলি এলোমেলোভাবে তৈরি করা হয়, তাই এগুলি মনে রাখা কঠিন৷ আমি সাধারণত অ্যাডমিন পাসওয়ার্ড সম্পাদনা করি, কারণ আমি এটি অনেক ব্যবহার করি। মূলত আমি এটি পরিবর্তন করি:

keystone_auth_admin_password: cY3QHwjMLRdSuZMlKI3OvujScCNeIMdH

এটিতে:

keystone_auth_admin_password: secrete

অবশিষ্ট পাসওয়ার্ডগুলি তেমন দরকারী নয়, তাই আমি themalone ছেড়ে দিই। যাইহোক, আপনি মনে রাখা সহজ এমন কিছু ব্যবহার করার প্রয়োজন হতে পারে বলে মনে করেন এমন যেকোনো পাসওয়ার্ড পরিবর্তন করতে পারেন।

এরপরে, অন্য একটি স্ক্রিপ্ট চালান যা হোস্টে Ansible ইনস্টল করে, এছাড়াও কিছু Ansible অতিরিক্ত এবং র‍্যাপার স্ক্রিপ্ট যা এর ব্যবহারকে সহজ করে:

# scripts/bootstrap-ansible.sh

এই মুহুর্তে, হোস্ট ওএসএ ইন্সটল গ্রহণের জন্য প্রস্তুত, ইনস্টলেশনটি সম্পন্ন করে এমন উত্তরযোগ্য প্লেবুকগুলি সরান:

# scripts/run-playbooks.sh

একটি র‍্যাকস্পেস পাবলিক ক্লাউড সার্ভারে, সমস্ত প্লেবুকের মাধ্যমে একটি সম্পূর্ণ রান সম্পূর্ণ হতে প্রায় 45 মিনিট সময় লাগে৷ Ansible-এর সাথে কাজ করার একটি চমৎকার দিক হল যে সমস্ত কাজগুলি অদম্য, অর্থাৎ প্লেবুকগুলি কোনও সমস্যা ছাড়াই একাধিকবার চালানো যেতে পারে। যদি একটি কাজ ইতিমধ্যে সম্পন্ন করা হয়, এটি দ্বিতীয়বার চালানো কিছুই করে না। এটি আসলে খুবই উপযোগী, কারণ এটি একটি লাইভ সিস্টেমকে শুধুমাত্র উপযুক্ত কনফিগারেশন ফাইলগুলি পরিবর্তন করে এবং প্লেবুকগুলিকে পুনরায় চালানোর মাধ্যমে পুনরায় কনফিগার করা সম্ভব করে তোলে, প্রথমে সবকিছু ভেঙে ফেলার প্রয়োজন ছাড়াই৷

ওপেনস্ট্যাক-অ্যানসিবলের একটি দ্রুত সফর

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

প্রথমত, হরাইজন ড্যাশবোর্ড স্থাপন করা হয়েছে এবং হোস্টের পাবলিক আইপি ঠিকানায় অ্যাক্সেসযোগ্য হওয়া উচিত। আপনি প্রশাসক ব্যবহার করতে পারেন৷ অ্যাকাউন্ট, আপনি /etc/openstack_deploy/user_secrets.yml-এ যে পাসওয়ার্ড দিয়েছিলেন ফাইল। আপনি যদি এই ফাইলটি সম্পাদনা না করে থাকেন, তাহলে আপনাকে এই ফাইলটি খুলতে হবে এবং keystone_auth_admin_password সনাক্ত করতে হবে কোন পাসওয়ার্ড ব্যবহার করা হয়েছে তা খুঁজে বের করার জন্য সেটিং।

আমি উপরে উল্লিখিত হিসাবে, সার্ভারগুলি সমস্ত LXC পাত্রে ইনস্টল করা আছে। নিম্নলিখিত কমান্ড আপনাকে কন্টেইনারগুলির তালিকা দেখায়:

root@miguel-lxc-server:~# lxc-ls -f
NAME                                          STATE    IPV4                                        IPV6  AUTOSTART
--------------------------------------------------------------------------------------------------------------------------------
aio1_ceilometer_api_container-c8e825de        RUNNING  10.0.3.203, 172.29.237.195                  -     YES (onboot, openstack)
aio1_ceilometer_collector_container-2da3371f  RUNNING  10.0.3.10, 172.29.238.178                   -     YES (onboot, openstack)
aio1_cinder_api_container-88e59c04            RUNNING  10.0.3.125, 172.29.238.106, 172.29.247.183  -     YES (onboot, openstack)
aio1_cinder_scheduler_container-69d2bec4      RUNNING  10.0.3.4, 172.29.239.79                     -     YES (onboot, openstack)
aio1_galera_container-2f36d624                RUNNING  10.0.3.95, 172.29.237.18                    -     YES (onboot, openstack)
aio1_galera_container-3b8e14d7                RUNNING  10.0.3.18, 172.29.237.166                   -     YES (onboot, openstack)
aio1_galera_container-618973ae                RUNNING  10.0.3.82, 172.29.238.189                   -     YES (onboot, openstack)
aio1_glance_container-4b41140f                RUNNING  10.0.3.21, 172.29.237.77, 172.29.246.233    -     YES (onboot, openstack)
aio1_heat_apis_container-40ec9f3e             RUNNING  10.0.3.193, 172.29.239.6                    -     YES (onboot, openstack)
aio1_heat_engine_container-36e270c9           RUNNING  10.0.3.171, 172.29.239.171                  -     YES (onboot, openstack)
aio1_horizon_container-3497588e               RUNNING  10.0.3.33, 172.29.239.114                   -     YES (onboot, openstack)
aio1_horizon_container-6cac5348               RUNNING  10.0.3.30, 172.29.238.168                   -     YES (onboot, openstack)
aio1_keystone_container-821e7cf8              RUNNING  10.0.3.38, 172.29.238.105                   -     YES (onboot, openstack)
aio1_keystone_container-d63c657e              RUNNING  10.0.3.69, 172.29.239.208                   -     YES (onboot, openstack)
aio1_memcached_container-8baf34d5             RUNNING  10.0.3.158, 172.29.237.135                  -     YES (onboot, openstack)
aio1_neutron_agents_container-21b819b7        RUNNING  10.0.3.233, 172.29.239.130, 172.29.240.182  -     YES (onboot, openstack)
aio1_neutron_server_container-b4279bbe        RUNNING  10.0.3.52, 172.29.239.216                   -     YES (onboot, openstack)
aio1_nova_api_metadata_container-79faf41a     RUNNING  10.0.3.60, 172.29.239.110                   -     YES (onboot, openstack)
aio1_nova_api_os_compute_container-fed67563   RUNNING  10.0.3.231, 172.29.239.17                   -     YES (onboot, openstack)
aio1_nova_cert_container-72f66c56             RUNNING  10.0.3.155, 172.29.237.152                  -     YES (onboot, openstack)
aio1_nova_conductor_container-7d0f1b0f        RUNNING  10.0.3.164, 172.29.239.144                  -     YES (onboot, openstack)
aio1_nova_console_container-62af2918          RUNNING  10.0.3.106, 172.29.238.236                  -     YES (onboot, openstack)
aio1_nova_scheduler_container-e6b79b3b        RUNNING  10.0.3.250, 172.29.236.153                  -     YES (onboot, openstack)
aio1_rabbit_mq_container-0e0fe308             RUNNING  10.0.3.86, 172.29.239.93                    -     YES (onboot, openstack)
aio1_rabbit_mq_container-a4a04124             RUNNING  10.0.3.253, 172.29.237.188                  -     YES (onboot, openstack)
aio1_rabbit_mq_container-b9c6dce6             RUNNING  10.0.3.22, 172.29.238.111                   -     YES (onboot, openstack)
aio1_repo_container-6a8377fc                  RUNNING  10.0.3.102, 172.29.237.47                   -     YES (onboot, openstack)
aio1_repo_container-b92c563a                  RUNNING  10.0.3.223, 172.29.239.251                  -     YES (onboot, openstack)
aio1_rsyslog_container-a6e4f7d4               RUNNING  10.0.3.170, 172.29.237.249                  -     YES (onboot, openstack)
aio1_swift_proxy_container-9f0130d3           RUNNING  10.0.3.20, 172.29.237.227, 172.29.247.52    -     YES (onboot, openstack)
aio1_utility_container-d83fab91               RUNNING  10.0.3.39, 172.29.237.161                   -     YES (onboot, openstack)

এই তালিকার মধ্য দিয়ে গিয়ে, আপনি কী পরিষেবাগুলি স্থাপন করা হয়েছিল তা দেখতে পারেন৷ আপনি lxc-attach ব্যবহার করে একটি পাত্রে প্রবেশ করতে পারেন আদেশ একটি বিশেষভাবে আকর্ষণীয় ধারক হল ইউটিলিটি সহ তালিকার নীচে নাম। এই পাত্রে প্রবেশ করার জন্য এই কমান্ডটি ব্যবহার করা উচিত:

# lxc-attach -n aio1_utility_container-d83fab91

ইউটিলিটি ধারকটি দরকারী কারণ এতে সমস্ত OpenStack কমান্ড লাইনক্লায়েন্ট ইনস্টল করা আছে, সাথে openrc যাওয়ার জন্য প্রস্তুত অ্যাডমিন অ্যাকাউন্টের জন্য ফাইল। নিম্নলিখিত উদাহরণ সেশনে, আমি openstack ব্যবহার করি ইউটিলিটি আমার স্থাপনার ব্যবহারকারীদের তালিকার জন্য জিজ্ঞাসা করুন:

root@miguel-lxc-server:~# lxc-attach -n aio1_utility_container-d83fab91
root@aio1_utility_container-d83fab91:~# source openrc
root@aio1_utility_container-d83fab91:~# openstack user list
+----------------------------------+--------------------+
| ID                               | Name               |
+----------------------------------+--------------------+
| 2257ddc66d4c41ba8500114944cbb852 | dispersion         |
| 22f1824610b34eb2a6cfaba09b8feb93 | ceilometer         |
| 271f9bd069b2440ebb27c8f460bb3bcf | neutron            |
| 2ecb372f6563410ab8138625c45a72e3 | heat               |
| 35a7c9373ff640c4ba768963c1f53f02 | keystone           |
| 37041c2377c44f5cb84ffafee5bfed6f | cinder             |
| 4b7f43c7c2cc443889cd6b5d90a30e49 | glance             |
| 6ee6a4abb7e64b3d801f2653efb9c9ec | swift              |
| 9b375e06cb0a481a8ed2f94e28e1cb39 | nova               |
| b2b90c7eed704c63bbc8ea0eb23f43c4 | admin              |
| bd3eed1e0cf54b93a0d7c6a7849be778 | stack_domain_admin |
+----------------------------------+--------------------+

কন্টেইনার থেকে প্রস্থান করতে এবং হোস্টে ফিরে যেতে, exit টাইপ করুন অথবা Ctrl-D.

হিট করুন

এখানে Ansible-এর আরেকটি চমৎকার বৈশিষ্ট্য রয়েছে:এটি আপনাকে একটি পরিষেবা পুনরায় ইনস্টল করার অনুমতি দেয়, যেটি ভুল করে উন্নয়নের সময় দূষিত হয়েছিল। এটি করার জন্য, কেবল প্রভাবিত পাত্রটি ধ্বংস করুন:

# lxc-stop -n <container-name>
# lxc-destroy -n <container-name>

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

ডেভেলপমেন্ট ওয়ার্কফ্লো

আপনি অবশ্যই জানতে চান কিভাবে আমি ব্যবহারিক শর্তে DevStack-এর প্রতিস্থাপন হিসাবে একটি OSA অল-ইন-ওয়ান স্থাপনা ব্যবহার করি। প্রক্রিয়াটিতে কয়েকটি সহজ ধাপ রয়েছে:

  1. OSA-AIO

    স্থাপন করুন

    স্পষ্টতই, সবকিছু একটি একক-নোড ওপেনস্ট্যাক-অ্যানসিবলক্লাউড স্থাপনের মাধ্যমে শুরু হয়। আমি সাধারণত আমার হোস্ট হিসাবে একটি র্যাকস্পেস পাবলিক ক্লাউড সার্ভার ব্যবহার করি, তবে আপনি যে কোনও উবুন্টু 14.04 হোস্ট ব্যবহার করতে পারেন যা আমি উপরে তালিকাভুক্ত করেছি৷

  2. লক্ষ্য পাত্রে সংযুক্ত করুন

    আমি তারপর lxc-attach ব্যবহার করে যে কন্টেইনারটিতে আমি কাজ করতে চাই সেই পরিষেবাটি চালায় তার ভিতরে যাই কমান্ড আমি উপরে দেখিয়েছি। আমি যদি অপ্রয়োজনীয়তার সাথে মোতায়েন করা পরিষেবাতে কাজ করতে যাচ্ছি, আমি প্রথমে শুধুমাত্র একটি কন্টেইনার সক্রিয় রাখতে HAProxyconfiguration সম্পাদনা করি। নির্বাচিত পাত্রে কিছু ভুল হলে অবশিষ্ট পাত্রগুলি ব্যাকআপ হিসাবে ব্যবহার করা যেতে পারে৷

  3. লক্ষ্য পরিষেবা বন্ধ করুন

    ধারকটি পরিষেবাটির একটি উত্পাদন সংস্করণ চালাচ্ছে যা আমি কাজ করতে চাই৷ যেহেতু এই পরিষেবাটি আমার কোন কাজে আসে না, তাই আমি স্ট্যান্ডার্ড service <name> stop ব্যবহার করে এটি বন্ধ করি আদেশ উদাহরণস্বরূপ, আমি যদি তাপ-ইঞ্জিন পাত্রে থাকি, তাহলে আমি service heat-engine stop চালাব .

  4. ক্লোন ডেভেলপমেন্ট সংস্করণ

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

  5. নির্ভরতা আপডেট করুন

    ডেভেলপমেন্ট সংস্করণের জন্য উত্তরযোগ্য প্লেবুক দ্বারা ইনস্টল করা সংস্করণের চেয়ে ভিন্ন নির্ভরতার সেট প্রয়োজন হতে পারে, তাই, নিরাপত্তার জন্য, Irun pip install -r requirements.txt পাত্রে যেহেতু OSA নিজস্ব ব্যক্তিগত পাইথন প্যাকেজ সংগ্রহস্থল তৈরি করে, apackage এর একটি প্রয়োজনীয় সংস্করণ এতে উপলব্ধ নাও হতে পারে। যখন এটি ঘটে, আমি no-index = False সেট করি কন্টেইনারের /root/.pip/pip.conf-এ pypi-তে অ্যাক্সেস সক্ষম করতে ফাইল, এবং তারপর আবার চেষ্টা করুন।

  6. সিঙ্ক ডাটাবেস

    OSA এর সাথে ইনস্টল করা মূল সংস্করণ এবং আমার বিকাশ সংস্করণের মধ্যে আরেকটি সম্ভাব্য পার্থক্য হল ডাটাবেস মাইগ্রেশন, তাই আমি সবসময় ডাটাবেস সিঙ্ক করি, ঠিক ক্ষেত্রে। এটি করার জন্য কমান্ডটি পরিষেবাগুলির মধ্যে সামান্য পরিবর্তিত হয়, তবে এটি সাধারণত db_sync এর সাথে পরিচালনার স্ক্রিপ্টটি আহ্বান করতে হয় বিকল্প উদাহরণস্বরূপ, কীস্টোনের সাথে কাজ করার সময়, ডাটাবেস সিঙ্ক করার কমান্ড হল keystone-manage db_sync

  7. প্রয়োজনে মূল কনফিগারেশন ফাইলগুলিতে পরিবর্তন করুন

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

  8. ম্যানুয়ালি চালান, অথবা একটি পরিষেবা হিসাবে ইনস্টল করুন এবং চালান

    অবশেষে, বিকাশ সংস্করণ শুরু করা যেতে পারে। এটি সহজে করতে, সরাসরি পাইথন অ্যাপ্লিকেশনটি চালান। উদাহরণস্বরূপ, আমি যদি তাপ-ইঞ্জিন পরিষেবাতে কাজ করি, আমি bin/heat-engine চালাতে পারি টার্মিনালে লগ আউট করে অগ্রভাগে পরিষেবা শুরু করতে প্রকল্পের রুটডিরেক্টরি থেকে। পরিষেবাটি বন্ধ করতে, আমি Ctrl-C টিপতে পারি, ঠিক যেমনটি DevStack এ করা হয়েছে।

    টার্মিনাল বন্ধুত্বপূর্ণ ডিবাগার, যেমন pdb (কমান্ড লাইন) বা pudb (ইন্টারেক্টিভ), পাত্রে ইনস্টল করা যেতে পারে এবং দুর্দান্ত কাজ করে। আপনি যদি PyCharm-এর মতো আরও জটিল ডিবাগার ব্যবহার করতে চান তাহলে হোস্ট থেকে কন্টেইনারে ssh-এর উপর রিমোটেড বাগিংও সম্ভব।

    বেশিরভাগ পরিষেবার জন্য, সেগুলিকে ম্যানুয়ালি চালানোর জন্য ডেভস্ট্যাকের মতো আরামদায়কভাবে কাজ করার জন্য যথেষ্ট। একমাত্র ব্যতিক্রম হল এমন পরিষেবাগুলির জন্য যা সরাসরি পাইথনস্ক্রিপ্ট চালায় না, যেমন কীস্টোন, যা সাধারণত অ্যাপাচির অধীনে চলে। যদিও Apache উত্পাদনে ব্যবহৃত হয়, উন্নয়নের জন্য এটি পাইথন অ্যাপ্লিকেশন সরাসরি চালানোর জন্য পুরোপুরি নিরাপদ, যা সম্ভবত একটি ইভেন্টলেট-ভিত্তিক ওয়েব সার্ভার চালাবে। যদি কোন কারণে Apache ব্যবহার করা ইচ্ছা হয়, তাহলে বিকল্প হল python setup.py install চালিয়ে ডেভেলপমেন্ট সংস্করণ ইনস্টল করা। এবং তারপর service apache2 restart দিয়ে ইতিমধ্যেই ইনস্টল করা Apache পরিষেবা পুনরায় চালু করুন . এটি python setup.py develop এর মাধ্যমে ইনস্টল করার মাধ্যমে এর সোর্স ডিরেক্টরি থেকে অ্যাপ্লিকেশনটি চালানোও সম্ভব। এবং তারপর Apache সাইট কনফিগারেশন ফাইলে হোম ডিরেক্টরি যোগ করা।

OSA-AIO:The Pros

DevStack-এর জায়গায় OSA-এর সাথে কাজ করা অনেকটা আনন্দদায়ক অভিজ্ঞতা। নির্ভরতা দ্বন্দ্ব আর না থাকাটা খুবই ভালো, কারণ OSA-এর সাথে, যদি কোনো একটি পরিষেবাকে রিবেস করতে হয় এবং তার জন্য নতুন নির্ভরতার প্রয়োজন হয়, অন্য পরিষেবাগুলি তাদের নিজস্ব পাত্রে প্রভাবিত হয় না৷

আমি আরও খুঁজে পেয়েছি যে আমার খুব কমই স্ক্র্যাচ থেকে পুরো স্থাপনা পুনরায় তৈরি করতে হবে। আমি সাধারণত এটি করি যখন আমি পুরো সিস্টেমটিকে ওপেনস্ট্যাকের একটি নতুন রিলিজে আপগ্রেড করতে চাই, কিন্তু, প্রতিদিনের কাজের জন্য, আমি স্থানীয় আপডেট বা মেরামত করা সহজ বলে মনে করি। একটি বিদ্যমান ইনস্টলেশনে। আমি একটি পাত্রকে ধ্বংস করতে সক্ষম হতে পছন্দ করি এবং তারপরে বাকি পরিষেবাগুলিকে স্পর্শ না করেই আমার জন্য Ansible পুনরায় তৈরি করতে চাই৷

অবশেষে, আমি সত্যিই পছন্দ করি যে ওএসএ আমাকে সিস্টেমের কোন অংশটিকে ডেভেলপমেন্ট প্যাকেজ হিসাবে ইন্সটল করতে দেয়, বাকিটা OpenStack ক্লাউড ইন্সটল করে এবং উৎপাদন ব্যবহারের জন্য কনফিগার করে রাখে।

OSA-AIO:কনস

তবে অবশ্যই, সবকিছুর ক্ষেত্রে যেমন, OSA-এর সাথে কাজ করার কিছু দিক রয়েছে যা দুর্দান্ত নয়, তাই আমি আপনাকে গল্পের সেই দিকটিও দিতে চাই।

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

সাধারণভাবে, একটি ব্যতিক্রম ছাড়া, সমস্ত মডিউলের জন্য উত্তরযোগ্য পরিবর্তনশীল হিসাবে উন্মোচিত বেশ কয়েকটি কনফিগারেশন বিকল্প রয়েছে। যখন নিউট্রনের কথা আসে, কনফিগারেশন ততটা নমনীয় নয়। কনটেইনার এবং ভিএম জুড়ে নেটওয়ার্ক টানেলগুলি সর্বদা Linux ব্রিজ ব্যবহার করার জন্য কনফিগার করা হয়। উদাহরণস্বরূপ, আপনার যদি Open vSwitch এর সাথে কাজ করার প্রয়োজন হয়, তাহলে আপনাকে প্লেবুকগুলি চালানোর পরে ম্যানুয়ালি কনফিগারেশন পরিবর্তন করতে হবে, যা মজাদার নয়। এছাড়াও, এই সময়ে নিউট্রন প্লাগইনগুলির কোনোটিই সমর্থিত নয়৷

উপসংহার

আমি আশা করি আপনি আমার ওয়ার্কফ্লোকে ওপেনস্ট্যাক-অন্যান্যসিবল শিখতে এবং ব্যবহার করার জন্য আকর্ষণীয় মনে করবেন। হিট আপস্ট্রিম বৈশিষ্ট্য এবং বাগ ফিক্সে কাজ করার সময় এটি আমার সময় বাঁচিয়েছে। কিস্টোনফেডারেশন ডিবাগ এবং সমস্যা সমাধানের জন্যও আমি OSA-এর উপর অনেক বেশি নির্ভর করেছি।

আপনি যদি OSA ব্যবহার করতে আগ্রহী হন, আমি আপনাকে কিছুটা অনুসন্ধান করতেও উত্সাহিত করি, কারণ এটি আপনাকে আরও নিবন্ধ এবং ব্লগ পোস্টে নিয়ে যাবে (যেমন এটি একটি বা এটি অন্য একটি), যেখানে অন্যান্য OpenStack অবদানকারীরা ব্যাখ্যা করেছেন যে তারা কীভাবে তাদের OSA অন্তর্ভুক্ত করেছে নিজস্ব কর্মপ্রবাহ।


  1. কম্পিউটার সহ বা ছাড়াই অ্যান্ড্রয়েড থেকে আইপ্যাডে ভিডিও স্থানান্তর করুন

  2. এই টিপস দিয়ে আপনার আইপ্যাডের ব্যাটারি লাইফ বাড়ান

  3. সর্বোত্তম ব্যাটারি লাইফ সহ সেরা 5 টি ল্যাপটপ

  4. DevStack ছাড়া জীবন:OSA-এর সাথে OpenStack ডেভেলপমেন্ট