vagrant virtualbox vagrantfile

Vagrant: no se admite la capacidad ''change_host_name''



virtualbox vagrantfile (1)

El problema es que el invitado no admite la capacidad ''change_host_name'' cuando intento ejecutar la siguiente línea de comando:

vagrant up

Me da un error como el siguiente:

Vagrant attempted to execute the capability ''change_host_name'' on the detect guest OS ''linux'', but the guest doesn''t support that capability. This capability is required for your configuration of Vagrant. Please either reconfigure Vagrant to avoid this capability or fix the issue by creating the capability.

Tenga en cuenta que mi sistema operativo es: OS X Yosemite 10.10.5

Versión de Guest Additions: 4.2.0 y Versión de VirtualBox: 5.0

He probado muchas soluciones de otras personas que enfrentan este problema, pero no pude solucionarlo.


Esto es https://github.com/mitchellh/vagrant/issues/7625 . Se solucionará en la próxima versión, hasta entonces, si te está bloqueando, puedes parchear a ti mismo.

Si quieres parchearte

Método 1 :

  • busque el archivo plugins/guests/ubuntu/guest.rb en su instalación errante
    • por ejemplo, /opt/vagrant/embedded/gems/gems/vagrant-1.8.5/plugins/guests/ubuntu/guest.rb en la instalación predeterminada de mac / linux
    • o /opt/vagrant/embedded/gems/vagrant-1.8.5/plugins/guests/ubuntu/guest.rb
    • Windows: C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.5/plugin‌​s/guests/ubuntu/gues‌​t.rb
  • reemplaza con https://raw.githubusercontent.com/carlosefr/vagrant/1c631c18d1a654405f6954459a42ac19a1a2f096/plugins/guests/ubuntu/guest.rb (asegúrate de tener los derechos correctos si realizas la instalación como administrador, debes ser el usuario administrador para guardar el archivo )
  • Alternativamente, edite el archivo y reemplace todos los contenidos por

    module VagrantPlugins module GuestUbuntu class Guest < Vagrant.plugin("2", :guest) def detect?(machine) # This command detects if we are running on Ubuntu. /etc/os-release is # available on modern Ubuntu versions, but does not exist on 14.04 and # previous versions, so we fall back to lsb_release. # # GH-7524 # GH-7625 # machine.communicate.test <<-EOH.gsub(/^ {10}/, "") if test -r /etc/os-release; then source /etc/os-release && test xubuntu = x$ID elif test -x /usr/bin/lsb_release; then /usr/bin/lsb_release -i 2>/dev/null | grep -q Ubuntu else exit 1 fi EOH end end end end

Método 2: un método alternativo para parchear el archivo usando el comando patch :

guarda el siguiente archivo en vagrant-guest.patch

commit 00fa49191dba2bb7c6322fa8df9327ca505c0b41 Author: Seth Vargo <[email protected]> Date: Sat Jul 23 11:40:36 2016 -0400 guests/ubuntu: Revert detection - Semi-reverts GH-7524 - Fixes GH-7625 diff --git a/plugins/guests/ubuntu/guest.rb b/plugins/guests/ubuntu/guest.rb index 9aeb7aa..f60108e 100644 --- a/plugins/guests/ubuntu/guest.rb +++ b/plugins/guests/ubuntu/guest.rb @@ -2,7 +2,22 @@ module VagrantPlugins module GuestUbuntu class Guest < Vagrant.plugin("2", :guest) def detect?(machine) - machine.communicate.test("test -r /etc/os-release && . /etc/os-release && test xubuntu = x$ID") + # This command detects if we are running on Ubuntu. /etc/os-release is + # available on modern Ubuntu versions, but does not exist on 14.04 and + # previous versions, so we fall back to lsb_release. + # + # GH-7524 + # GH-7625 + # + machine.communicate.test <<-EOH.gsub(/^ {10}/, "") + if test -r /etc/os-release; then + source /etc/os-release && test xubuntu = x$ID + elif test -x /usr/bin/lsb_release; then + /usr/bin/lsb_release -i 2>/dev/null | grep -q Ubuntu + else + exit 1 + fi + EOH end end end

y ejecuta el siguiente comando para aplicar el parche

sudo patch -p1 --directory /opt/vagrant/embedded/gems/gems/vagrant-1.8.5/ < vagrant-guest.patch

Simplemente reemplace /opt/vagrant/embedded/gems/gems/vagrant-1.8.5 (o /opt/vagrant/embedded/gems/vagrant-1.8.5/plugins/guests/ubuntu/guest.rb ) con su instalación de carpeta /opt/vagrant/embedded/gems/vagrant-1.8.5/plugins/guests/ubuntu/guest.rb