अगर आपको लगता था कि आपका जीवन उबाऊ था और आपके पास खेलने और छेड़छाड़ करने के लिए पर्याप्त वर्चुअलाइजेशन सॉफ्टवेयर नहीं था, तो आप आज की सामग्री से बहुत प्रसन्न होंगे। Vagrant को समर्पित एक पूरा लेख, वर्चुअलाइजेशन तैनाती और परीक्षण के लिए एक रैपर सॉफ्टवेयर।
विचार इस प्रकार है: आप गंदे आदेशों को छिपाते हैं और एक एकीकृत इंटरफ़ेस प्रस्तुत करते हैं, और फिर क्लाउड और क्या-क्या जैसे कुछ बज़वर्ड्स में जोड़ते हैं, और यह एक गर्म नई तकनीक बन जाती है जिसके बारे में हर कोई बात करता है। बहुत कुछ OpenStack, OpenShift, OpenCloud, और अन्य फैंसी नामों की तरह। वास्तव में, यदि आप PostgreSQL, Jenkins और Node.js जैसे अधिक नेम-ड्रॉपर्स में फेंकने का प्रबंधन भी करते हैं, तो आप आधुनिक, हिप और कूल होने के लिए अतिरिक्त अंक जीतते हैं। लेकिन सभी व्यंग्य एक तरफ, आइए देखें कि यह उपकरण क्या कर सकता है, और क्या यह किसी उपयोग, मूल्य और मज़े का है।
शब्द बहुत आवश्यक हैं
बस थोड़ा सा परिचय, आपको कुछ संदर्भ देने के लिए। Vagrant को मूल रूप से मिश्रित, तेज़ वातावरण में सॉफ्टवेयर परीक्षण, विकास और वर्चुअलाइजेशन संसाधनों के प्रबंधन को सरल बनाने के लिए डिज़ाइन किया गया था। प्रारंभ में, यह केवल VirtualBox के साथ काम कर सकता था, जो उद्योग में बिल्कुल पसंद का हाइपरवाइजर नहीं है, लेकिन हाल ही में, प्रोग्राम अन्य तकनीकों का भी समर्थन करता है, जैसे VMware, KVM और दोस्त, और यह कुछ अच्छे एकीकरण ट्रिक्स के साथ आता है।
संक्षेप में, ऑपरेंडी मोड यह है कि आप नेटिव कमांड के बजाय vagrant कमांड का उपयोग करते हैं। आपके पास कई हाइपरवाइजर हो सकते हैं, और उन सभी के अलग-अलग सिंटैक्स होंगे, जो एक तरह का ओवरहेड हो सकता है। इसीलिए आप Vagrant का उपयोग करते हैं, और उम्मीद है कि लचीले अमूर्तता की एक परत के पीछे बदसूरत सामान को छिपाते हैं। लेकिन उबाऊ शब्दों के साथ पर्याप्त, आइए व्यावहारिक बनें और अपने हाथों और पैरों के माध्यम से सीखें।
सेटअप करना
इसे और दिलचस्प बनाने के लिए, मैं इसे Linux पर प्रदर्शित *नहीं* करने जा रहा हूँ। रुको, वूट। हम Windows का उपयोग करेंगे, बस थोड़ी विविधता जोड़ने के लिए। फॉलोअप लेखों में, और मुझ पर विश्वास करें, कई होंगे, हम Linux पर वापस जाएंगे, लेकिन यहां, मैं आपको दिखाना चाहता हूं कि वैचारिक रूप से, यह वास्तव में कोई अंतर नहीं डालता।
फिर, पूरी तरह से उत्साहित और क्या-क्या, एक Powershell विंडो खोलें, और कुछ कमांड टाइप करना शुरू करें। उदाहरण के लिए, आप Vagrant चलाना चाह सकते हैं, और यह चलाकर किया जाता है:
vagrant up
हालाँकि, यदि आपने कार्य वातावरण को तैयार और इनिशियलाइज़ नहीं किया है, तो आपको कुछ बदसूरत त्रुटियां मिलेंगी:
PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe up
A Vagrant environment or target machine is required to run this
command. Run `vagrant init` to create a new Vagrant environment. Or, get an ID of a target machine from `vagrant global-status` to run this command on. A final option is to change to a directory with a Vagrantfile and to try again.
वातावरण को इनिशियलाइज़ करने के बाद, आप गंभीरता से काम करना शुरू कर सकते हैं।
लेकिन फिर, हमें कुछ बदसूरत त्रुटियों से जूझना होगा:
PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'base' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: >= 0
==> default: Adding box 'base' (v0) for provider: virtualbox
default: Downloading: base
default:
An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try again.
Couldn't open file /HashiCorp/Vagrant/bin/base
PS C:\HashiCorp\Vagrant\bin>
डिफ़ॉल्ट रूप से, Vagrant का Windows संस्करण एक बेस इमेज से एक वर्चुअल मशीन शुरू करने का प्रयास करेगा। वह इमेज उपलब्ध नहीं होगी, यही कारण है कि यदि आप बिना किसी पूर्व तैयारी के up कमांड चलाते हैं तो यह विफल होने वाला है।
इसलिए, पहली चीज कुछ इमेज खींचना है। Docker की तरह, Vagrant अपने स्वयं के ऑनलाइन रिपॉजिटरी के साथ आता है, जहां बुनियादी टेम्पलेट संग्रहीत होते हैं। आप मैन्युअल रूप से ऑपरेटिंग सिस्टम को पकड़ और इंस्टॉल कर सकते हैं, लेकिन यह उपरोक्त अमूर्तता का उद्देश्य खो देता है। आइए एक इमेज लें, उदाहरण के लिए:
vagrant box add hashicorp/base
यदि आप एक गैर-मौजूद इमेज निर्दिष्ट करते हैं, तो आपको और त्रुटियां मिलेंगी:
PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe box add hashicorp/base
The box 'hashicorp/base' could not be found or could not be accessed in the remote catalog. If this is a private box on HashiCorp's Atlas, please verify you're logged in via `vagrant login`. Also, please double-check the name. The expanded
URL and error message are shown below:
URL: ["https://atlas.hashicorp.com/hashicorp/base"]
Error: The requested URL returned error: 404 Not Found
लेकिन आप बेस इमेज की उम्मीद करते हैं। विभिन्न ऑनलाइन संदर्भ हैं कि यह समस्या क्यों होती है, और यह कॉन्फ़िगरेशन फाइल में डिफ़ॉल्ट घोषणा पर आकर रुकती है। यदि आप इसे उपलब्ध इमेज में से एक में बदलते हैं और इसे डाउनलोड करते हैं, तो आप समस्या का समाधान करेंगे। वास्तव में, Vagrantfile में, आपको डिफ़ॉल्ट प्रविष्टि को संपादित करने की आवश्यकता होगी। स्ट्रिंग base को आप जो भी Vagrant शुरू करते समय डिफ़ॉल्ट इमेज के रूप में उपयोग करना चाहते हैं, उससे बदलें। यह Ubuntu, Fedora, CoreOS, या उस तरह की कोई भी चीज हो सकती है।
# Every Vagrant development environment requires a box. You can search for boxes at https://atlas.hashicorp.com/search.
config.vm.box = "base"
हमारे अभ्यास के लिए, और इसके लिए एक बहुत अच्छा भविष्य का कारण है, हम CoreOS इमेज (yungsang/coreos) के कुछ कम स्पष्ट विकल्प का परीक्षण करेंगे। इमेज लें।
PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe box list
ubuntu/trusty64 (virtualbox, 20150506.0.0)
yungsang/coreos (virtualbox, 1.3.8)
फिर Vagrant को फिर से चलाएं। CoreOS शुरू होगा, जिसमें यूजर और नेटवर्क सेटअप, और कुछ अन्य विवरण शामिल हैं। थोड़ी देर बाद, सिस्टम चल रहा होगा। अब आप SSH का उपयोग करके होस्ट से जुड़ने का प्रयास कर सकते हैं। डिफ़ॉल्ट रूप से, प्रत्येक चल रहा इंस्टेंस लोकलहोस्ट पर एक पोर्ट असाइन किया जाएगा। हमारे मामले में, हमारे बॉक्स के लिए SSH सेवा 127.0.0.1 पर पोर्ट 2222 पर चल रही है। यह वैसा ही है जैसा हमने Docker के साथ देखा था। फिर से, रेपो अवधारणा, नेटवर्किंग, बहुत समान। संकेत, इसके लिए एक अच्छा कारण है।
PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'yungsang/coreos'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'yungsang/coreos' is up to date...
==> default: Setting the name of the VM: bin_default_1431611566870_38538
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: core
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
वर्चुअल मशीन से कनेक्ट करें
हमारी वर्चुअल मशीन चल रही है। बढ़िया। आप vagrant status से जांच सकते हैं:
आप चल रही वर्चुअल मशीन में कदम रखने के लिए vagrant ssh या vagrant rdp रैपर कमांड का उपयोग कर सकते हैं। ऐसा करने के अन्य, अधिक उन्नत तरीके हैं, लेकिन हम इसे एक फॉलोअप ट्यूटोरियल में चर्चा करेंगे, जो नेटवर्किंग और क्लस्टर पर केंद्रित है।
Windows क्लाइंट के लिए, आप RDP का उपयोग कर सकते हैं, लेकिन यह हमारे मामले में काम नहीं करेगा, क्योंकि RDP CoreOS के अंदर उपलब्ध नहीं है। मुझे यकीन नहीं है कि VNC एक विकल्प है, लेकिन यह कुछ ऐसा है जिसे मुझे अभी तक परीक्षण करना है। इसी तरह, SSH एक समस्या पैदा करता है, क्योंकि Windows एक डिफ़ॉल्ट SSH एजेंट के साथ नहीं आता है, और यदि आपके पास PuTTY इंस्टॉल है, तो यह पथ में नहीं हो सकता है।
PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe rdp default
==> default: Detecting RDP info...
RDP connection information for this machine could not be
detected. This is typically caused when we can't find the IP
or port to connect to for RDP. Please verify you're forwarding
an RDP port and that your machine is accessible.
PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe ssh default -- -A
`ssh` executable not found in any directories in the %PATH% variable. Is an SSH client installed? Try installing Cygwin, MinGW or Git, all of which contain an SSH client. Or use your favorite SSH client with the following authentication information shown below:
Host: 127.0.0.1
Port: 2222
Username: core
Private key: C:/Users/<user>/.vagrant.d/insecure_private_key
फिर, यदि आप Windows पर काम कर रहे हैं, तो आपको OpenSSH कुंजी को PuTTY प्रारूप या इसी तरह में बदलने की भी आवश्यकता होगी। फिर से, ऐसा कुछ नहीं है जो अधिकांश लोग कभी भी अपने Vagrant कारनामों में सामना करेंगे, लेकिन समान समस्याओं को कई अलग-अलग तरीकों से निपटते देखना उपयोगी है।
इस बिंदु पर, हमने VirtualBox को प्रदाता के रूप में उपयोग करके अपना पहला Vagrant VM इंस्टेंस सफलतापूर्वक लॉन्च किया है, लेकिन यह कुछ ऐसा है जिसका हमने अपने परीक्षण के दौरान कहीं सामना नहीं किया। खैर, तरह। लेकिन हमें किसी भी स्पष्ट VirtualBox कमांड का उपयोग करने की आवश्यकता नहीं थी, या XML फाइलों और क्या-क्या के बारे में चिंता करने की आवश्यकता नहीं थी। यह सिर्फ शुरुआत है, लेकिन यह आज के लिए हमारे ट्यूटोरियल का अंत भी है। हम एक उच्च नोट पर समाप्त करते हैं।
अधिक पठन
यदि आप थोड़ा टेक्स्ट पसंद करते हैं:
Introducing Vagrant, एक Linux Journal लेख
Vagrant पर क्रैश कोर्स
Docker नेटवर्किंग थिंगी
निष्कर्ष
Vagrant एक दिलचस्प अवधारणा की तरह लगता है, हालांकि यह आपके वातावरण में चुनौतियों को हल करने का सबसे अच्छा तरीका नहीं हो सकता है। यदि आप वास्तव में वर्चुअलाइजेशन में महारत हासिल करना चाहते हैं, और आपको अपने सेटअप के हर तथ्य को नियंत्रित करने की आवश्यकता है, तो आपको नीचे से ऊपर तक सब कुछ सीखने में आवश्यक समय, खून और धैर्य का निवेश करना होगा। क्योंकि अन्यथा, जब वे आएंगे तो आप किसी भी मुद्दे को हल करने में सक्षम नहीं होंगे, और वे आएंगे, या प्रौद्योगिकी को समझेंगे।
लेकिन यह एक दिलचस्प स्पिन है, और हम अभी तक देखेंगे कि हम Vagrant को अपनी आभासी यात्रा पर कितनी दूर ले जा सकते हैं। खैर, बहुत कम से कम, हमने प्रोग्राम सेटअप मुद्दों और प्रारंभिक कॉन्फ़िगरेशन को संभाला, हमने सीखा कि इमेज कैसे खींचें और शुरू करें, कुछ बुनियादी जांच की, और नेटवर्क कनेक्टिविटी के आसपास काम किया। काफी उपयोगी। पक्का और भी बहुत कुछ आने वाला है, जिसमें बहुत महत्वपूर्ण प्लगइन्स फ्रेमवर्क शामिल है, जो VMware, LXC, libvirt के लिए कनेक्टिविटी भाग का विस्तार करता है, साथ ही उन्नत नेटवर्किंग, क्लस्टर सेटअप, और क्या-क्या। अपडेट के लिए बने रहें।
चीयर्स।