আমি কীভাবে কোনও ভার্চুয়ালবক্স ভিএম এর সাথে কোনও ভ্যাগ্র্যান্ট প্রকল্প ডিরেক্টরি যুক্ত করব?


132

কোনওভাবেই আমার ভ্যাগ্র্যান্ট প্রকল্পটি তার ভার্চুয়ালবক্স ভিএম থেকে নিজেকে বিচ্ছিন্ন করেছে, যাতে আমি যখন vagrant upভ্যাগ্র্যান্ট বেস-বাক্সটি আমদানি করি এবং একটি নতুন ভার্চুয়াল মেশিন তৈরি করি।

বিদ্যমান ভিএম এর সাথে ভ্যাগ্র্যান্ট প্রকল্পটি আবার যুক্ত করার কোনও উপায় আছে কি? ভ্যাগ্র্যান্ট কীভাবে অভ্যন্তরীণভাবে ভার্চুয়ালবক্স ভিএম ডিরেক্টরিতে কোনও ভ্যাগ্রান্টফিল সংযুক্ত করে?

উত্তর:


89

সতর্কতা: দ্য ভাগ্রান্ট 1.0.x জন্য কাজ নিচে সমাধান কিন্তু না দ্য ভাগ্রান্ট 1.1+।

ভ্যাগ্র্যান্ট আপনার ভিএম এর ইউআইডি ট্র্যাক করতে আপনার "ভ্যাগ্রান্টফায়াল" এর মতো একই ডিরেক্টরিতে ".vagrant" ফাইলটি ব্যবহার করে। ভিএম উপস্থিত না থাকলে এই ফাইলটির অস্তিত্ব থাকবে না। ফাইলটির ফর্ম্যাটটি JSON। এটির মতো দেখতে যদি কোনও একক ভিএম উপস্থিত থাকে:

{
   "active":{
      "default":"02f8b71c-75c6-4f33-a161-0f46a0665ab6"
   }
}

default ডিফল্ট ভার্চুয়াল মেশিনের নাম (যদি আপনি মাল্টি-ভিএম সেটআপ ব্যবহার করেন না)।

যদি আপনার ভিএম কোনওভাবে আলাদা হয়ে যায় তবে আপনি যা করতে পারেন তা হ'ল VBoxManage list vmsভার্চুয়ালবক্স তার নাম এবং ইউইউডি দ্বারা জেনে থাকা প্রতিটি ভিএমকে তালিকাভুক্ত করবে। তারপরে ম্যানুয়ালি .vagrantআপনার মতো একই ডিরেক্টরিতে একটি ফাইল তৈরি করুন Vagrantfileএবং সামগ্রীগুলি সঠিকভাবে পূরণ করুন।

vagrant statusভ্যাগ্র্যান্ট যথাযথ পরিবর্তনগুলি বেছে নিয়েছে তা নিশ্চিত করতে চালান Run

দ্রষ্টব্য: এটি সরকারীভাবে ভ্যাগ্র্যান্ট দ্বারা সমর্থিত নয় এবং ভ্যাগ্র্যান্ট .vagrantযে কোনও সময় বিন্যাস পরিবর্তন করতে পারে । তবে এটি ভ্যাগ্রান্ট ০.৯..7 হিসাবে বৈধ এবং ভ্যাগ্র্যান্ট 1.0 এর জন্য বৈধ হবে।


অসাধারণ! ধন্যবাদ. আমার মনে হচ্ছিল কিছু অনুপস্থিত ছিল।
jrdmcgr

48
ভ্যাগ্র্যান্ট ১.১ এর জন্য, ইউআইডিগুলি একটি মেশিন-নির্দিষ্ট ফাইলে সংরক্ষণ করা হয় .vagrant/machines/{name}/{provider}/id। আসলে, ফাইলটিতে থাকা একমাত্র জিনিসটি হ'ল ইউআইডি।

2
আমি এই কৌশলটি চেষ্টা করেছিলাম তবে ভিজ্যর স্ট্যাটাসটি কেবল রাজ্যটিকে তৈরি করা হয়নি বলে রিপোর্ট করে। ভ্যাগ্রেন্ট আপ একটি নতুন ভিএম তৈরি করে এবং সূক্ষ্মভাবে কাজ করে। আমি যদি আইডি ফাইলটি পরিবর্তন করি তবে এটি তৈরি না হওয়া হিসাবে প্রতিবেদন করে, এমনকি যদি আমি এটি সবেমাত্র তৈরি করা বাক্সের ইউইডিতে ফিরিয়ে দিই।
রিস Marsland

4
ভ্যাগ্র্যান্ট ১.১++ এর সাথে নিশ্চিত হয়ে নিন যে আপনি আইডির শেষের দিকে কোনও নতুন লাইন যুক্ত করবেন না। দেখুন github.com/mitchellh/vagrant/issues/1755 বিস্তারিত জানার জন্য
Mads Mobæk

1
আমি আমার প্রোফাইলে (ম্যাক) .vagrant সন্ধান করছিলাম। নোট করুন (কমপক্ষে আমার জন্য) এটি কুকবুকস ফোল্ডার এবং ভ্যাগ্র্যান্টফাইলে একই ফোল্ডারে ছিল। (
ভ্যাগ্র্যান্ট

208

জন্য দ্য ভাগ্রান্ট 1.6.3 নিচের কাজগুলো করুন:

1) আপনার Vagrantfile যে ডিরেক্টরিতে অবস্থিত সেখানে কমান্ডটি চালান

VBoxManage list vms

আপনার কাছে এরকম কিছু থাকবে:

"virtualMachine" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

2) নিম্নলিখিত পথে যান:

cd .vagrant/machines/default/virtualbox

3) নামক কোনো ফাইল তৈরি করুন আইডি আপনার VM- র আইডি দিয়ে xxxxxxxxxxxx-XXXXXXXX-xxxxxxxxxxxx

4) ফাইলটি সংরক্ষণ করুন এবং অস্পষ্টভাবে চালিত করুন


8
একটি নতুন লাইন ছাড়াইid ফাইল তৈরি করার একটি ভাল উপায় । echo -n '<your id here>' > id
জিওনগ চিয়ামিভ

1
দুর্দান্ত কাজ করে। তবে কেন এমন হয়?
জনিকিউ

ভ্যাগ্র্যান্ট ১.7.২ এর সাথে আমার জন্য কাজ করেছেন। ধন্যবাদ!
রাফেন

1
নিখুঁতভাবে কাজ করেছেন।
কেসি রবিনসন

# for box in test1 test2; do virtualboxid=$(VBoxManage list vms | grep $box | cut -d' ' -f2); echo -n $virtualboxid > .vagrant/machines/$box/virtualbox/id; done
টেস্ট

48

উপরের সংস্করণ সহ সমাধানটি বেশ একই।

তবে প্রথমে আপনাকে .vbox ফাইলটি হাত দিয়ে চালু করতে হবে যাতে এটি উপস্থিত হয় VBoxManage list vms

তারপরে আপনি .vagrant/machines/default/virtualbox/idইউয়েডটি সঠিক কিনা তা পরীক্ষা করতে পরীক্ষা করতে পারেন ।


4
এছাড়াও, এটি লক্ষণীয় যে আপনি যদি idফাইলটি সম্পাদনা করেন তবে আপনাকে অবশ্যই এটি একটি লাইনে রাখতে হবে। কোনও কারণে এটি শেষ পর্যন্ত নিউলাইন পছন্দ করে না (আমার পাঠ্য সম্পাদক এটি ডিফল্টরূপে যুক্ত করে, তাই আমার সমস্যা হয়েছিল)।
ড্যান 2552

আমি এটি নিয়ে একটি সমস্যায় পড়েছি কারণ আমি যে ফোল্ডারটি ছিল তাতে নতুন নামকরণ করেছিলাম ag আমি এটি .vagrant1.0 ফর্ম্যাটে একটি ফাইল তৈরি করে ঠিক করেছি এবং এটি স্বয়ংক্রিয়ভাবে আপগ্রেড হয়েছে। যত তাড়াতাড়ি আমি এটি করেছি, এটি আসলে পুরানো ভিএমটির নতুন নাম ডিরেক্টরি ডিরেক্টরিতে নামকরণ করেছে।
জোনা

2
আমার ভ্রান্ত / মেশিন / ডিফল্ট / ভার্চুয়ালবক্স / আইডি ভুল ভার্চুয়ালবক্স মেশিন আইডির দিকে ইঙ্গিত করেছে সেখানে আমি সংযোগ বিচ্ছিন্ন করে দিয়েছি বলে আমি নিশ্চিত নই। যে ফাইলটি সাহায্য করেছিল তা হ'ল হোম /। ভার্চুয়ালবক্স / ভার্চুয়ালবক্স.এক্সএমএল। এটিতে একটি মেশিনরেজিস্ট্রি বিভাগ রয়েছে যা ভার্চুয়ালবক্স মেশিন ইউইউডি মেশিনের নামের সাথে ম্যাপ করে। উদাহরণস্বরূপ <MachineEntry UUID = "{f232f951-103b-af28-9f8d-b2ab21bs258f}" src = "$ হোম / VirtualBox ভার্চুয়াল মেশিনের \ <মেশিন-নাম> \ <মেশিন-নাম> .vbox" />
arntg

14

আজ যদি সমস্যাটি থাকে তবে আমার .vagrantফোল্ডারটি অনুপস্থিত ছিল এবং দেখা গেছে যে কেবল আইডি সেট করার চেয়ে আরও কয়েকটি ধাপ ছিল:

  1. আইডি সেট করুন:

    VBoxManage list vms
    

    আইডিটি সন্ধান করুন এবং সেট করুন {project-folder}/.vagrant/machines/default/virtualbox/id

    লক্ষ্য করুন defaultআলাদা হতে পারে যদি আপনার সেট Vagrantfileযেমন config.vm.define "someothername"

  2. মেশিনকে প্রভিশন দেওয়া বন্ধ করুন:

    ফাইলটির action_provisionমতো একই দিরের নামে একটি ফাইল তৈরি idকরুন, এতে এর বিষয়বস্তু সেট করুন: পদক্ষেপ 1 এ পাওয়া আইডিটি 1.5:{id}প্রতিস্থাপন করুন {id}

  3. একটি নতুন পাবলিক / প্রাইভেট কী সেটআপ করুন:

    ভ্যাগ্র্যান্ট .vagrant/machines/default/virtualbox/private_keyমেশিনে ছড়িয়ে দেওয়ার জন্য সঞ্চিত একটি ব্যক্তিগত কী ব্যবহার করে। আপনার একটি নতুন তৈরি করতে হবে।

    ssh-keygen -t rsa
    

    এটির নাম private_key

    vagrant sshতারপর কপি private_key.pubমধ্যে /home/vagrant/.ssh/authorized_keys


"অনুমোদিত_কীজ" কোনও ফাইল বা ডিরেক্টরি?
ব্যবহারকারী 2568374

এটি একটি ফাইল, আপনি যদি এটি অনুসন্ধান করেন তবে আপনাকে প্রচুর পরিমাণে জিনিসপত্র পাওয়া যাবে, এটি একটি স্ট্যান্ডার্ড
এসএসএস

যেহেতু আমি একই কীগুলি ব্যবহার করছিলাম, আমাকে শেষ সেট (তৃতীয়) করতে হয়নি। অন্যথায়, সত্যিই ভাল ব্যাখ্যা এবং সবকিছু নিখুঁত।
দাজাগ


9

ভ্যাগ্র্যান্ট 1.7.4 এর সাথে আজ একই সমস্যার আপডেট করুন:

উদাহরণস্বরূপ, 'ভিআইপি-কুইকস্টার্ট_দেফফল_৩৩৩65656518৫৫৮৩০-২২৪৪' বক্সটি যোনিতে জোড় করতে।

$ VBoxManage list
"vip-quickstart_default_1431365185830_12124" {50feafd3-74cd-40b5-a170-3c976348de27}
$ echo -n "50feafd3-74cd-40b5-a170-3c976348de27" > .vagrant/machines/default/virtualbox/id

6

মাল্টি-ভিএম সেটআপগুলির জন্য, এটির মতো দেখতে পাবেন:

{
   "active":{
        "web":"a1fc9ae4-5d43-49cb-be31-ab3c4f74745d",
        "db":"13503bc5-76b8-4c26-95c4-32435b372212"
   }
}

আপনি এই ভিএম তৈরি করতে ব্যবহৃত ভ্যাগ্রান্টফাইল থেকে ভিএম নামগুলি পেতে পারেন। এই লাইনটি দেখুন:

config.vm.define :web do |web_config|

"ওয়েব" এই ক্ষেত্রে ভিএম এর নাম।


এবং ডিবি একটি ডিফল্ট ভিএম ??
রবার্ট

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

5

আমি ব্যবহার করছি দ্য ভাগ্রান্ট 1.8.1 উপর ওএসএক্স এল ক্যাপটেনের

আমার কম্পিউটারটি পুনরায় চালু হওয়ার সাথে সাথে আমার ভিএম সঠিকভাবে বন্ধ ছিল না, তাই যখন আমি চেষ্টা vagrant upকরেছি তখন সর্বদা নতুন ভিএম তৈরি করা হয়। এখানে কোনও সমাধান আমার পক্ষে কাজ করে নি। কিন্তু কাজটি কী ছিল তা ছিল ইঙ্গিমুরিলোর জবাবের ভিন্নতা

সুতরাং পরিবর্তে .vagrant/machines/default/virtualbox/idচলমান থেকে আইডি উপর ভিত্তি করে তৈরি VBoxManage list vms। আমাকে আইডিটি আপডেট করতে হয়েছিল.vagrant/machines/local/virtual_box/id

আমি একটি লাইনার পেয়েছি যা মূলত আমার জন্য এটি করে:

echo -n `VBoxManage list vms | head -n 1 | awk '{print substr($2, 2, length($2)-2)}'` > .vagrant/machines/local/virtualbox/id

এটি ধরে নিয়েছে যে প্রথম বাক্সটি আমার চলমান থেকে শুরু করা উচিত VBoxManage list vms


4

এটি @ পেটকুপের উত্তর থেকে পরিবর্তিত হয়েছে ।

vagrant haltআপনি যদি বাক্সটি এখনও বন্ধ না করেন তবে চালান ।

তারপরে আপনার ভার্চুয়ালবক্সগুলি তালিকাবদ্ধ করুন: VBoxManage list vms

এটি আপনার সমস্ত ভার্চুয়ালবক্সকে তালিকাবদ্ধ করবে। বক্স আপনি প্রত্যাবর্তন এবং কোঁকড়া বন্ধনী মধ্যে আইডি দখল করতে চান সনাক্ত: {}

তারপরে প্রকল্প আইডি ফাইলটি সম্পাদনা করুন: sudo nano .vagrant/machines/default/virtualbox/id(প্রকল্প ডিরেক্টরি থেকে)

আপনি ভিবিগুলির তালিকা থেকে অনুলিপি করা আইডি দিয়ে এটি প্রতিস্থাপন করুন।

ব্যবহার করে দেখুন vagrant reload

যদি এটি কাজ না করে এবং এসএসএইচ অনুমোদনের (যেখানে আমি হোঁচট খেয়েছি) ঝুলিয়ে রাখে তবে অসম্পূর্ণ গিট থেকে অনিরাপদ পাবলিক কীটি অনুলিপি করুন । এর সামগ্রীটি প্রতিস্থাপন করুন /.vagrant/machines/default/virtualbox/private_key। ব্যাকআপ অবশ্যই মূল: cp private_key private_key-bak

তারপরে দৌড়াও vagrant reload। এটি বলবে এটি অনিরাপদ কীটি চিহ্নিত করেছে এবং একটি নতুন তৈরি করবে।

default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!

আপনি সব সেট করা উচিত।


3

ভ্যাগ্রান্ট ১.৯.২:

আমার 'উবুন্টু ১.0.০৪.১' নামে ভার্চুয়াল বাক্সে একটি ভিএম ছিল তাই আমি এটিকে একটি ভ্রান্ত বাক্স হিসাবে প্যাকেজ করেছি:

vagrant package --base "Ubuntu 16.04.1"

এর সাথে সাড়া দেয় ...

==> Ubuntu 16.04.1: Exporting VM...
==> Ubuntu 16.04.1: Compressing package to: blah blah/package.box

0

আমি ম্যাকোসে রয়েছি এবং বাক্সগুলিতে থাকা লকগুলি মুছে ফেলা আমার সমস্যার সমাধান করেছে।

কিছু কারণে

vagrant halt

এই লকগুলি অপসারণ করেনি এবং টাইমম্যাশিন ব্যবহার করে .vagrant / মেশিন / ডিফল্ট / ভার্চুয়ালবক্সে আমার সমস্ত সেটিংস পুনরুদ্ধার করার পরে, লকগুলি সরিয়ে, ডান মেশিনটি বুট আপ হয়ে গেছে।

কেবলমাত্র 1 টি ছোট সমস্যা রয়ে গেছে, এটি গ্রাবের মধ্যে বুট হয়ে গেছে তাই আমাকে একবার এন্টার টিপতে হবে, এই থাকছে কিনা তা জানেন না, তবে খুব শীঘ্রই আমি তা খুঁজে বের করব।

আমি অস্পষ্ট 1.7.4 এবং ভার্চুয়ালবক্স 5.0.2 চালাচ্ছি

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