Vagrant

Warning

Na windows installer może się pod koniec instalacji wywalać. Wtedy trzeba uruchomić cmd jako Administrator i uruchomić installer z terminala.

Tworzenie maszyny

Uruchamianie maszyny

  1. Stwórz na pulpicie katalog szkolenie

  2. Przejdź za pomocą terminala do tego katalogu i wykonaj:

    vagrant init ubuntu/bionic64
    
    vagrant init http://cloud-images.ubuntu.com/releases/18.10/release/ubuntu-18.10-server-cloudimg-amd64-vagrant.box
    
  3. Spowoduje to wygenerowanie pliku, który po usunięciu komentarzy będzie wyglądał następująco:

    Vagrant.configure("2") do |config|
      config.vm.box = "ubuntu/bionic64"
    end
    
  4. Uruchom maszynę

    vagrant up
    

Note

Gdyby wystąpił problem i maszyny nie można uruchomić nawet z poziomu Virtualbox GUI (błąd: VT-x is disabled in the BIOS for both all CPU modes (VERR_VMX_MSR_ALL_VMX_DISABLED)), to należy odblokować w biosie opcje:

  • Enable Virtualization Technology (VTx)

  • Virtualization Technology Directed I/O (VTd)

Więcej informacji: https://stackoverflow.com/questions/33304393/vt-x-is-disabled-in-the-bios-for-both-all-cpu-modes-verr-vmx-msr-all-vmx-disabl

  1. Stworzy to maszynę z oficjalnego obrazu 64 bitowej wersji Ubuntu LTS (Long Time Support)

  2. Aby zalogować się na maszynę należy wykonać:

    vagrant ssh
    

Note

Standard tworzenia boxów Vagrant wymaga posiadanie w systemie użytkownika vagrant z hasłem vagrant

Update vagrant boxes

vagrant box update

Usuwanie maszyny

vagrant halt
vagrant destroy

Uruchamianie innego providera

vagrant up --provider virtualbox

Konfiguracja maszyny

Konfiguracja forwardingu portów

config.vm.network "forwarded_port", guest: 8080, host: 8080
config.vm.network "forwarded_port", guest: 9000, host: 9000

Synchronizowanie katalogów

config.vm.synced_folder ".", "/vagrant"

Konfiguracja zasobów

  • Poniższe polecenia wykonaj w pliku Vagrantfile

Słaby komputer

  • np. 2 CPU core, 4 GB RAM

Zalecana konfiguracja maszyny wirtualnej:

  • 1 CPU core

  • 1024 MB Ram

Średni komputer

Zalecana konfiguracja maszyny wirtualnej:

  • 66% CPU core

  • 66% MB RAM

Na przykład:

  • 2 CPU core

  • 4096 MB Ram

Dobry komputer

Zalecana konfiguracja maszyny wirtualnej:

  • 75% CPU core

  • 75% MB RAM

Provisioning

Provisioning za pomocą shell

config.vm.provision "shell", inline: <<- SHELL
    /usr/bin/whoami > /tmp/whoami
SHELL
Vagrant.configure("2") do |config|
  config.vm.provision "shell", path: "bootstrap.sh"
end
Vagrant.configure("2") do |config|
  config.vm.provision "shell", path: "https://example.com/provisioner.sh"
end

Provisioning za pomocą Puppet

config.vm.provision :puppet do |puppet|
    puppet.module_path = "puppet/modules"
    puppet.manifests_path = "puppet/manifests"
    puppet.manifest_file = "default.pp"
end

Finalna konfiguracja

Twoja konfiguracja Vagrant powinna wyglądać tak:

Vagrant.configure("2") do |config|
    config.vm.hostname = "ubuntu.local"

    config.vm.box = "ubuntu/bionic64"
    # config.vm.box = "ubuntu-lts"
    # config.vm.box_url = "http://cloud-images.ubuntu.com/releases/18.10/release/ubuntu-18.10-server-cloudimg-amd64-vagrant.box"

    config.vm.network "forwarded_port", guest: 80, host: 8080
    config.vm.network "forwarded_port", guest: 443, host: 8443
    config.vm.synced_folder ".", "/var/www/host"

    config.vm.provider "virtualbox" do |v|
        v.name = "ubuntu.local"
        v.cpus = 2
        v.memory = 4096
    end

    config.vm.provision "shell", path: "bootstrap.sh"

end
vagrant provision

Zadania do rozwiązania

Automatyzacja tworzenia wirtualnej maszyny

  • Użyj pliku Vagrantfile do przetrzymywania następującej konfiguracji

  • Stwórz maszynę z oficjalnego obrazu 64 bitowej wersji Ubuntu LTS (Long Time Support)

  • Ustaw hostname na ubuntu.local

  • Ustaw zasoby przydzielane maszynie wirtualnej w zależności od mocy komputera:

    • 75% CPU core,

    • 75% MB RAM

  • Ustaw forwarding portów:

    • 80 -> 8888

    • 443 -> 8443

    • 7990 -> 7990

    • 7999 -> 7999

    • 8080 -> 8080

    • 8081 -> 8081

    • 8090 -> 8090

    • 9000 -> 9000

    • 5432 -> 5432

    • 3306 -> 3306

  • Ustaw aby obecny katalog był synchronizowany na maszynie gościa w /var/www/host

  • Podnieś maszynę z Vagrantfile i rozpocznij pobieranie obrazu Ubuntu LTS

Vagrant + Puppet

  • Skopiuj dotychczasowe manifesty z poprzednich zadań (/etc/puppet/code/*) na swój komputer do katalogu puppet/code/

  • Skopiuj certyfikaty SSL, które wygenerowałeś na swój komputer do katalogu ssl/

  • Wyłącz maszynę vagrant halt, a następnie ją usuń vagrant destroy

  • Edytuj plik Vagrantfile i dopisz, by maszyna była stawiana z manifestów Puppet

  • W pliku Vagrantfile trzymaj jak najmniej logiki i wszystko rób za pomocą Puppet

  • Zrób by certyfikaty były przenoszone z twojego komputera na maszynę gościa (nie generuj nowych, tylko wykorzystaj stare!) oczywiście za pomocą Puppet, umieść to w pliku puppet/code/certificates.pp

  • Każdy z manifestów powinien być w osobnych plikach a jeden puppet/main.pp powinien includować pozostałe z katalogu puppet/code/*

Warning

Ubuntu 16.04 (LTS) nie zawiera w sobie puppeta, co jest sprzeczne z wymaganiem (standardem) vagrantowym. Trzeba go zainstalować za pomocą provisioningu shella, a później odpalać manifesty puppetowe.