[Vagrant] Jak rozwiązać problem z siecią w Ubuntu 14.04?

Systemy operacyjne
[Vagrant] Jak rozwiązać problem z siecią w Ubuntu 14.04?

Jeśli czytacie mojego bloga to zapewne wiecie, że ostatnimi czasy poświęcam sporo czasu na zapoznanie z tematem wirtualizacji. Świetnym narzędziem z którym tę przygodę można rozpocząć jest Vagrant, a następnie warto zapoznać się z Docker-em. Jednak jak wszędzie możemy spotkać się z pewnymi problemami.

Szczerze powiedziawszy od dawna nie pracuję na Windows-ie, ale część systemów które tworzę muszą na nim pracować. I o dziwo większość problemów z jakimi się stykam występują tylko tam 😉 Pocieszające prawda? Tym razem jednak nie o samym Windows-ie, a o problemie z jakim możecie się spotkać przy próbie wirtualizacji Ubuntu 14.04 wersja 32 bitowa na Windows-ie z kartą sieciową Intel-a. Poniżej komunikat, który możecie zauważyć przy próbie uruchomienia systemu poleceniem vagrant up

cloud-init-nonet[4.54]: waiting 10 seconds for network device
cloud-init-nonet[14.57]: waiting 120 seconds for network device
cloud-init-nonet[134.57]: gave up waiting for a network device.

Jeśli widzicie takowy komunikat to musicie wprowadzić drobne modyfikacje do waszego pliku Vagrantfile. Zacznijmy od zaprezentowania bazowego pliku Vafrantfile, który będziemy modyfikować w celu eliminacji błędu:

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

  config.vm.box = "ubuntu/trusty32"

  config.vm.network :private_network, ip: '192.168.33.10'

  config.vm.provider "virtualbox" do |vb|

      vb.name = "Developer machine"
      vb.cpus = 1
      vb.memory = 1024
      vb.gui = false

  end

end

Pierwsza rzecz jaką należy zrobić to włączyć GUI, gdyż dzięki temu będziemy w stanie obserwować proces tworzenia i uruchamiania maszyny wirtualnej. Tym samym będziemy w stanie zaobserwować, gdzie leży problem w jej uruchomieniu bądź utworzeniu. W tym celu zmieniamy lub dodajemy wpis:

vb.gui = true

Kiedy będziemy mieli pewność, że problemem jest sieć i pojawia się poniższy komunikat:

cloud-init-nonet[4.54]: waiting 10 seconds for network device
cloud-init-nonet[14.57]: waiting 120 seconds for network device
cloud-init-nonet[134.57]: gave up waiting for a network device.

Prawdopodobnie problemem jest serownik karty sieciowej, który w tej kombinacji nie działa prawidłowo 🙁 Psioczyłem na Windows-a, a tu taki poważy błąd w Ubuntu. Na szczęście w odróżnieniu od Windows-a w linux-ach mamy z reguły jakieś alternatywne rozwiązania i społeczność, która chętnie pomoże je znaleźć. Tak więc i w tym przypadku mamy proste rozwiązanie bowiem dodajemy wpis zmieniający kartę sieciową:

vb.customize ["modifyvm", :id, "--nictype1", "Am79C973"]
vb.customize ["modifyvm", :id, "--nictype2", "Am79C973"]

Po takiej modyfikacji nasz plik Vagrantfile będzie wyglądał następująco:

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

  config.vm.box = "ubuntu/trusty32"

  config.vm.network :private_network, ip: '192.168.33.10'

  config.vm.provider "virtualbox" do |vb|

    vb.name = "Developer machine"
    vb.cpus = 1
    vb.memory = 1024
    vb.gui = false

    vb.customize ["modifyvm", :id, "--nictype1", "Am79C973"]
    vb.customize ["modifyvm", :id, "--nictype2", "Am79C973"]

  end

end