Следующая конфигурация Vagrantfile
не будет работать, поскольку следующая виртуальная машина получит то же имя, что и предыдущая. (Кстати, не уверен на 100%, но я думаю, что это работало в предыдущих версиях Vagrant).
Vagrant.configure(2) do |config|
config.vm.define "xfcevm" do |xfcevm|
xfcevm.vm.box = "generic/ubuntu1904"
xfcevm.vm.hostname = "xfcevm"
config.vm.provider "virtualbox" do |vb|
vb.name = "xfcevm"
end
end
config.vm.define "gnomevm" do |gnomevm|
gnomevm.vm.box = "generic/fedora30"
gnomevm.vm.hostname = "gnomevm"
config.vm.provider "virtualbox" do |vb|
vb.name = "gnomevm"
end
end
config.vm.provider "virtualbox" do |vb|
# vb.name = config.vm.hostname
vb.gui = true
vb.memory = "3072"
vb.cpus = 1
vb.customize ["modifyvm", :id, "--vram", "32"]
end
config.vm.provision "ansible" do |ansible|
ansible.verbose = "v"
ansible.compatibility_mode = "2.0"
ansible.playbook = "setup.yml"
end
config.vm.provision "ansible", run: 'always' do |ansible|
ansible.verbose = "v"
ansible.compatibility_mode = "2.0"
ansible.playbook = "tests.yml"
end
end
В строке # vb.name = config.vm.hostname
назначение возвращает объект (оно печатается с помощью puts
как #<Object:0x0000000001c191d8>
), и я недостаточно знаком с Ruby и Vagrant, чтобы получить от него строковый атрибут, если это возможно даже для этого объекта.
PS Обходной путь (альтернативный этому вопросу) будетчтобы получить имя работающей машины VirtualBox из PlaySbook Ansible, так как целью было вызвать VBoxManage
на этой виртуальной машине как local_action
из PlaySbook Ansible.