ভ্যাগ্র্যান্ট 'ডিফল্ট' মেশিনের নাম কীভাবে পরিবর্তন করবেন?


235

কোনও ডিজিটাল বক্স চালু করার সময় 'ডিফল্ট' নামটি কোথা থেকে আসে?

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...

এটি সেট করার কোনও উপায় আছে?


ভার্চুয়ালাইজেশন সক্রিয় কিনা তা পরীক্ষা করতে ভুলবেন না, আপনার BIOS এ ভিটি-এক্স সক্ষম করুন। আমার সমস্যাটি ছিল
রেনাতো টাভারেস

উত্তর:


341

আমি একাধিক বিকল্পকে বিভ্রান্তিকর পেয়েছি, তাই তারা ঠিক কী করে তা দেখার জন্য আমি তাদের সকলের পরীক্ষা করার সিদ্ধান্ত নিয়েছি।

আমি ভার্চুয়ালবক্স 4.2.16-r86992 এবং ভ্যাগ্র্যান্ট 1.3.3 ব্যবহার করছি।

আমি একটি ডিরেক্টরি তৈরি করেছি nametestএবং দৌড়েছি

vagrant init precise64 http://files.vagrantup.com/precise64.box

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

  1. ডিফল্ট ভ্যাগ্রান্টফাইল

    Vagrant.configure('2') do |config|
        config.vm.box = "precise64"
        config.vm.box_url = "http://files.vagrantup.com/precise64.box"
    end
    

    ভার্চুয়ালবক্স জিইউআই নাম: "নেমেস্টেস্ট_ডিফল্ট_1386347922"

    মন্তব্যসমূহ: নামটি DIRECTORY_default_TIMESTAMP ফর্ম্যাটে ডিফল্ট।

  2. ভিএম সংজ্ঞায়িত করুন

    Vagrant.configure('2') do |config|
        config.vm.box = "precise64"
        config.vm.box_url = "http://files.vagrantup.com/precise64.box"
        config.vm.define "foohost"
    end
    

    ভার্চুয়ালবক্স জিইউআই নাম: "নেম টেষ্ট_ফুহোস্ট_1386347922"

    মন্তব্যসমূহ: আপনি যদি স্পষ্টভাবে কোনও ভিএম সংজ্ঞায়িত করেন তবে ব্যবহৃত নামটি টোকেনকে 'ডিফল্ট' প্রতিস্থাপন করবে। এটি কনসোলের নাম ভিজাগর আউটপুট। zookএর (কমেন্টার) ইনপুটটির ভিত্তিতে সরলীকরণ

  3. সরবরাহকারীর নাম সেট করুন

    Vagrant.configure('2') do |config|
        config.vm.box = "precise64"
        config.vm.box_url = "http://files.vagrantup.com/precise64.box"
        config.vm.provider :virtualbox do |vb|
            vb.name = "foohost"
        end
    end
    

    ভার্চুয়ালবক্স জিইউআই নাম: "ফুহোস্ট"

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

    সংযুক্ত উদাহরণ: ভিএম-এবং- সরবরাহকারীর নাম নির্ধারণ করুন

    Vagrant.configure('2') do |config|
        config.vm.box = "precise64"
        config.vm.box_url = "http://files.vagrantup.com/precise64.box"
        config.vm.define "foohost"
        config.vm.provider :virtualbox do |vb|
            vb.name = "barhost"
        end
    end
    

    ভার্চুয়ালবক্স জিইউআই নাম: "বারহোস্ট"

    মন্তব্যসমূহ: আপনি যদি একই সাথে উভয় পদ্ধতি ব্যবহার nameকরেন তবে সরবরাহকারীর কনফিগারেশন ব্লকে নির্ধারিত মানটি জয়ী হয়। zookএর (কমেন্টার) ইনপুটটির ভিত্তিতে সরলীকরণ

  4. সেট hostname(বোনাস)

    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
      config.vm.hostname = "buzbar"
    end
    

    মন্তব্যসমূহ: এটি ভিএম এর অভ্যন্তরে হোস্টনাম সেট করে। এটি hostnameভিএম-তে কমান্ডের আউটপুট হবে এবং প্রম্পটে যা দেখা যাচ্ছে vagrant@<hostname>এটি এখানে এটির মতো দেখাবেvagrant@buzbar

চূড়ান্ত কোড

    Vagrant.configure('2') do |config|
        config.vm.box = "precise64"
        config.vm.box_url = "http://files.vagrantup.com/precise64.box"
        config.vm.hostname = "buzbar"
        config.vm.define "foohost"
        config.vm.provider :virtualbox do |vb|
            vb.name = "barhost"
        end
    end

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


3
আরে, আমি সম্পর্কিত বিষয়ে আরও কিছু গবেষণা করেছি। (1) নামের ডিরেক্টরিটি প্রথমবারের মতো উত্পন্ন হয় এবং আপনি ডিরেক্টরিটির নাম পরিবর্তন করলে পরিবর্তন হয় না। (২) নামের টাইমস্ট্যাম্পটি প্রথমবার উত্পন্ন হয় এবং আপনি পুনরায় আরম্ভ করার পরে পরিবর্তন হয় না। (3) প্রকল্পটি ইউইউডি এর মাধ্যমে একটি ভার্চুয়ালবক্স ভিএম-এ ম্যাপ করা হয়েছে যা PROJECT_ROOT / .vagrant / মেশিনে / ডিফল্ট / ভার্চুয়ালবক্স / আইডিতে সঞ্চিত। এই ইউআইডি ভার্চুয়ালবক্স জিইউআইতে দৃশ্যমান নয় (ভার্চুয়ালবক্স.আর / টিকেট / 89৯৯৯ ) তবে আপনি VBoxManage list vmsকমান্ড লাইনে ব্যবহার করতে পারেন ।
অদ্ভুততা

দরকারী রেফারেন্স আমি আগের মন্তব্যের জন্য ব্যবহৃত একটি: stackoverflow.com/questions/9434313/...
odigity

6
এটি লক্ষণীয় যে define VMপদ্ধতির নামটি ভ্যাগ্র্যান্ট স্ট্ডআউট এবং লগগুলিতে ব্যবহৃত হয়, যখন set provider nameনামটি সরবরাহকারীর সাথে বাক্স পরিচালনার জন্য ব্যবহৃত হয়। সুতরাং উভয় প্রাসঙ্গিক।
রেডসান্দ্রো

30
do... endএটি খালি থাকলে আসলে আপনার প্রয়োজন নেই । config.vm.define "foohost"ঠিক কাজ করে।
জুক

6
আমি এই উত্তরের বিবরণটি পছন্দ করি তবে এটি সত্যিকারের মূল প্রশ্নের সমাধান করে না। হ্যাঁ, এই কনফিগারেশনের ফলে ভার্চুয়ালবক্স জিইউআই যথাযথভাবে "নাম" প্রদর্শিত হবে এবং আপনি যদি সেগুলিকে vboxmanage এর সাথে তালিকাভুক্ত করেন তবে একই। যাইহোক, Bringing machine 'default' up with 'virtualbox' provider...আপনি কার্যকর করার সময় এটি এখনও রাখেvagrant up
টমশবর

60

এইভাবে আমি পৃথক ভিএমগুলিকে নাম নির্ধারণ করেছি। YOURNAMEHEREআপনার পছন্দসই নাম পরিবর্তন করুন ।

ভ্যাগ্রান্টফায়ালের বিষয়বস্তু:

Vagrant.configure("2") do |config|

  # Every Vagrant virtual environment requires a box to build off of.
  config.vm.box = "precise32"

  # The url from where the 'config.vm.box' box will be fetched if it
  # doesn't already exist on the user's system.
  config.vm.box_url = "http://files.vagrantup.com/precise32.box"

  config.vm.define :YOURNAMEHERE do |t|
  end

end

টার্মিনাল আউটপুট:

$ vagrant status
Current machine states:

YOURNAMEHERE             not created (virtualbox)

9
আপনি আপনার সংজ্ঞায়নের শেষে ব্লকটি বাদ দিতে পারেন, তাই config.vm.define :app_nameখুব সহজে কাজ করে।
বিদুর

1
যদি আপনার ব্যবহারকারী নামটি পরিবর্তনশীল হয় তবে কোলন ":" অপসারণ করা উচিত:config.vm.define YOURNAMEHERE do |t| end
রাদু

17

আপনি যদি 'ডিফল্ট' পরিবর্তে অন্য কিছু পরিবর্তন করতে চান, তবে কেবল আপনার ভ্যাগ্রান্টফাইলে এই অতিরিক্ত লাইনগুলি যুক্ত করুন:

বেসরবাক্সের নামটি পরিবর্তন করুন

 config.vm.define "tendo" do |tendo|
  end

যেখানে "টেন্ডো" নামটি ডিফল্ট পরিবর্তে প্রদর্শিত হবে


আমি মনে করি আপনার উত্তরটি আরও পরিশ্রুত হয়েছে এবং এটি সুস্পষ্ট যে আপনি যা সেট করছেন সেটি অন্য উত্তরগুলির সাথে বিপরীত যা use: OBJECT_VALUE`
আন্দ্রেস লিওন

8

আমি ভ্যাগ্র্যান্টফিলের ভিতরে সংজ্ঞা দিয়ে নামটি নির্দিষ্ট করি এবং হোস্টনামটিও নির্দিষ্ট করি যাতে আমার ডিভাইসের ওএস থেকে লিনাক্স কমান্ডগুলি স্বাধীনভাবে কার্যকর করার সময় আমার প্রকল্পের নামটি দেখতে ভাল লাগে । ✌️

config.vm.define "abc"
config.vm.hostname = "abc"

6

হ্যাঁ, ভার্চুয়ালবক্স সরবরাহকারীর জন্য এমন কিছু করুন:

Vagrant.configure("2") do |config|
    # ...other options...
    config.vm.provider "virtualbox" do |p|
        p.name = "something-else"
    end
end

2
আমার ভ্যাগ্রান্টফাইলে পরিবর্তন করার পরে এবং সম্পূর্ণরূপে মেশিনটি ছিঁড়ে ফেলার vagrant destroyপরে এটি আবার ফিরিয়ে আনা এটি এখনও এটি ডিফল্ট বলে।
কাইল কেলি

3
আমি বিশ্বাস করি এটি ভার্চুয়ালবক্স জিইউতে নাম পরিবর্তন করে। "আপনি ভার্চুয়ালবক্স জিইউতে প্রদর্শিত নামটি কাস্টমাইজ করতে পারেন" তথ্যসূত্র: লিঙ্ক
নিখিল

2
আহ, আমার ত্রুটি জ্যাপ করুন - আমি ভেবেছিলাম লেখক ভার্চুয়ালবক্সের নামটি পরিবর্তন করতে চান, অভ্যন্তরীণ ভ্যাগ্র্যান্ট নামটি কেবলমাত্র বহু-ভিএম পরিবেশে পরিবর্তনযোগ্য।
সেমিউর 2

4
অত্যধিক পিক সেমিউর 2 হওয়ার অর্থ নয়, তবে কেবলমাত্র একটি সিঙ্গল কনফিগার.ভিএম.ডিফাইন ব্লক সরবরাহ করে একটি মেশিন পরিবেশে অভ্যন্তরীণ ভ্যাগ্র্যান্ট নাম সেটআপ করা সম্ভব।
ডেভ বার্চ

5

আপনি ভ্যাগ্র্যান্ট ডিফল্ট মেশিনের নামটির মান পরিবর্তন করে পরিবর্তন করতে পারেন config.vm.define

এখানে সহজ Vagrantfile যা ব্যবহার করে getopts এবং আপনার নাম পরিবর্তনশীল পরিবর্তন করতে অনুমতি দেয়:

# -*- mode: ruby -*-
require 'getoptlong'

opts = GetoptLong.new(
  [ '--vm-name',        GetoptLong::OPTIONAL_ARGUMENT ],
)
vm_name        = ENV['VM_NAME'] || 'default'

begin
  opts.each do |opt, arg|
    case opt
      when '--vm-name'
        vm_name = arg
    end
  end
  rescue
end

Vagrant.configure(2) do |config|
  config.vm.define vm_name
  config.vm.provider "virtualbox" do |vbox, override|
    override.vm.box = "ubuntu/wily64"
    # ...
  end
  # ...
end

সুতরাং আলাদা নাম ব্যবহার করতে আপনি উদাহরণস্বরূপ চালাতে পারেন:

vagrant --vm-name=my_name up --no-provision

দ্রষ্টব্য: কমান্ডের --vm-nameআগে প্যারামিটার নির্দিষ্ট করা দরকার up

বা:

VM_NAME=my_name vagrant up --no-provision

1

আপনার ভ্যাব্রেন্ট ফাইলটি ব্যবহার করার মতো অনেক লোকের ক্ষেত্রে - আপনি নামটি গতিশীলভাবে সেট করতে চাইতে পারেন । নীচে বাক্সের নাম এবং হোস্টনাম হিসাবে আপনার HOST মেশিনের ব্যবহারকারীর নাম ব্যবহার করে এটি কীভাবে করা যায় তার উদাহরণ নীচে দেওয়া হল :

require 'etc'
vagrant_name = "yourProjectName-" + Etc.getlogin
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/xenial64"
  config.vm.hostname = vagrant_name
  config.vm.provider "virtualbox" do |v|
    v.name = vagrant_name
  end
end
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.