Vagrant – cz.1

Od jakiegoś czasu informatyka rozwija się tak szybko że powtarzalność jest na modzie, czyli coś co się nazywa „DEVOPS” czyli dążenie do automatyzacji i powtarzalności. Tutaj przykuły moją uwagę takie technologie jak:

  • vagrant
  • docker
  • ansible
  • jenkinsi kilka innych.

Dzisiaj zacznę od podstaw vagranta firmy hashicorp. Vagrant to utworzenie środowiska testowego, developerskiego za pomocą opisu w jednym pliku. Do wirtualizacji posłuży tutaj virtual box, na stronie producenta jest opisane że jest kilka innych hipernadzorców jednak jeszcze nie sprawdzałem w boju tego. System działa pod Linux, Windows czy Mac. Ja nie wiem jak w Mac jest wiec będę skupiał się nad Linux i Windows. Procesu instalacji też nie będę opisywał gdyż w dzisiejszych czasach jest to na tyle proste, i jest już tyle opisów że szkoda mi czasu.

Jak to jest na samym początku zaczniemy od Hello Word.

Tworzymy sobie katalog, w nim plik: Vagrantfile.  Jest także inny sposób można w lini poleceń będąc w tym katalogu wpisać:

vagrant init

lub:

vagrant init centos/7

Pierwszy zainicjuje plik ogólny, a drugie polecenie zainicjuje pliki pod system centos w wersji 7. Gotowe paczki systemów nazywają się box, a lista znajduje się: https://app.vagrantup.com/boxes/search . W przypadku kiedy plik Vagrant istnieje w katalogu to niestety nie zainicjuje się nowy plik, trzeba usunąć lub zmienić nazwę.

Plik podstawowy powinien składać się z:

Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
end

Pierwsza linia informuje o wersji w jakiej jest dany plik, trzeba mieć na uwadze że jak coś zadziała nam w wersji 3 to nie musi działać w wersji 2. Natomiast jak coś działa w wersji 2 to powinno działać w wersji 3.

Będąc w katalogu wydajemy polecenie jak:

vagrant list-commands – lista dostępnych komend

vagrant up – uruchomienie środowiska, czyli jeżeli nie mamy lokalnie box’a to pobranie i na podstawie niej wykreowanie maszyny wirtualnej

vagrant provision – rencjalizacja srodowiska

vagrant ssh – połaczenie się po ssh do maszyny virtualnej

vagrant status – status środowiska

vagrant reload – restart maszyny wirtualnej wraz z reinicjalizacją środowiska, czyli konfiguracją

wszystkie dostępne komendy:

box manages boxes: installation, removal, etc.
cap checks and executes capability
cloud manages everything related to Vagrant Cloud
destroy stops and deletes all traces of the vagrant machine
docker-exec attach to an already-running docker container
docker-logs outputs the logs from the Docker container
docker-run run a one-off command in the context of a container
global-status outputs status Vagrant environments for this user
halt stops the vagrant machine
help shows the help for a subcommand
init initializes a new Vagrant environment by creating a Vagrantfile
list-commands outputs all available Vagrant subcommands, even non-primary ones
login
package packages a running vagrant environment into a box
plugin manages plugins: install, uninstall, update, etc.
port displays information about guest port mappings
powershell connects to machine via powershell remoting
provider show provider for this environment
provision provisions the vagrant machine
push deploys code in this environment to a configured destination
rdp connects to machine via RDP
reload restarts vagrant machine, loads new Vagrantfile configuration
resume resume a suspended vagrant machine
rsync syncs rsync synced folders to remote machine
rsync-auto syncs rsync synced folders automatically when files change
snapshot manages snapshots: saving, restoring, etc.
ssh connects to machine via SSH
ssh-config outputs OpenSSH valid configuration to connect to the machine
status outputs status of the vagrant machine
suspend suspends the machine
up starts and provisions the vagrant environment
upload upload to machine via communicator
validate validates the Vagrantfile
version prints current and latest Vagrant version
winrm executes commands on a machine via WinRM
winrm-config outputs WinRM configuration to connect to the machine

Mamy już swoje środowisko, trzeba pamiętać że login podstawowy to vagrant a hasło też vagrant. Jako root logujemy się poprzez sudo su - .

Są dwa ważne katalogi:

katalog z ogólnymi danymi: ~/.vagrant.d ( w windows ~ traktuje także jako katalog domowy użytkownika)

katalog z konfiguracją dla danego środowiska czyli w katalogu gdzie jest plik Vagrant jest także katalog: .vagrant

Jeżeli chcemy logować się poprzez ssh zdalnie to musimy mieć klucz czyli:

.vagrant/machines/default/virtualbox/private_key

lub w specyficznej konfiguracji (config.ssh.insert_key = false) ~/.vagrant.d/insecure_private_key

Tutaj mała uwaga lepiej nie ruszać pliku: ~/.vagrant.d/insecure_private_key jak już coś popsujemy to wykasować/zmienić nazwę a vagrant sam sobie wygeneruje w odpowiedniej wersji.