Как да настроите локална Linux среда с Vagrant

Първоначално публикувано на DigitalShore.io на 12 май 2016 г.

Като разработчици и инженери често се стремим към минимализъм и модулност. Това важи за самия код, който пишем и използваме, за да създадем нашата работа. Въпреки това, минимализмът и модулността често могат да бъдат пренебрегвани, когато става въпрос за нашите местни машини за развитие. С течение на времето всички различни програми, зависимости и инструменти, необходими за завършване на нашата работа, могат бързо да нараснат в размер и да се превърнат в лошо състояние; конфликтни версии на едни и същи инструменти или програми и непрекъснати актуализации на ОС могат да се превърнат в истински дела, които трябва да се заобиколят, когато дойде време за просто завършване на нашата работа - в противоречие със самите два принципа, към които трябва да се стремим по всяко време.

В тази публикация предлагам въвеждане от върха до долу в света на виртуалните машини и как те могат значително да подобрят работния ви процес за развитие, като същевременно облекчават повечето от изброените по-горе проблеми. Чрез използването на виртуални машини ще отворите пътища за изследване на нови технологии и техники с малък риск за развитието на вашата машина - всички, докато се придържате към минималистична и модулна школа на мисълта.

Защо да използвате виртуални машини?

Това е въпрос, с който се сблъсквам вече няколко месеца. И наистина е чудесен въпрос. За да започна да формулирам отговор, реших, че трябва да направя опис на всичко, инсталирано на моя Mac:

  • Xcode (тежи приблизително 10 GB след инсталирането)
  • Xcode инструменти за команден ред
  • Git (версия на OS X; обикновено зад и остаряла)
  • Ruby (версия на OS X; обикновено зад и остаряла)
  • Няколко Ruby Gems
  • Apache (версия на OS X; зад, остаряла и конфигурирана по различен начин)
  • PHP (версия на OS X; обикновено зад и остаряла)
  • Node.js
  • NPM и няколко глобално инсталирани модула
  • Heroku Toolbelt
  • MongoDB и вероятно всяка друга база данни, която може да се нуждая

С бърз поглед можете да видите колко неуправляемо по-горе може да нарасне с течение на времето, особено с годишната каданс на освобождаването на OS X. Нека не забравяме също, че OS X сама по себе си е интересна дистрибуция на Unix и нещата невинаги са такива, каквито изглеждат, докато копаете под капака. Програмите, езиците и инструментите се държат малко по-различно от това в сравнение с традиционните им колеги за Linux, което ви рискува по невнимание да предизвикате хаос в цялата си система.

Със сигурност трябва да има по-добро решение, за да направим всичко това много по-управляемо, модулно и по-безопасно.

Homebrew ... може би?

Но Homebrew може да помогне с горната дилема - може да кажете. И в по-голямата си част това е вярно. Ако обаче наистина търсите модулен подход, който няма да попречи на вашата локална машина и е доста пясъчен, виртуалната машина ще бъде най-добрият ви залог. Освен това, виртуална машина ще бъде по-подходяща за пълно имитиране на производствена среда повече от вашата хост машина.

Първи стъпки с VirtualBox

Започвам пътуването си с VirtualBox, преминавайки през ръчен процес, който включва изтегляне на дисковото изображение на Ubuntu Server 14.04 LTS и навигиране през криптичните подкани за инсталиране на Ubuntu.

След около 10 минути изтегляне и подкани за инсталиране, аз стартирах и работя с копие на Ubuntu Linux на моя Mac.

Сега, ако искам да създам друг VM, всичко, което ще трябва да направя, е да повторя този процес. Всеки. Single. Time.

Чакайте, този процес е напълно гаден!

Изчакайте секунда, изчакайте. Този процес наистина е гаден! Разбира се, това е нещо като модулно. Вид минималистичен. Но ако искам да създам друга виртуална машина, просто ще трябва да преживея целия този процес отново. И отново. И отново.

Имам две хватки с горното. Първо, не е много сухо. И второ, в сегашния ден и епоха на моментално удовлетворение, кой по света иска да седне през криптиран Linux инсталационен екран, над виртуална машина, всеки път, когато искаме да създадем нова среда на Linux? Къде е моето автоматично магическо решение, което просто настройва толкова много виртуални машини за мен, колкото аз искам?

Е, точно като плаващ бродник, там Вагрант се вмъква.

Въведете Vagrant

Vagrant е инструмент за изграждане на цялостни среди за разработка. С лесен за използване работен процес и съсредоточаване върху автоматизацията, Vagrant понижава времето за настройка на средата за развитие, увеличава паритета на развитие / производство и прави „работата на моята машина“ оправдание за реликва от миналото.

Основната идея около Vagrant е да се създаде директория на вашата локална машина, която служи като „дом“ за специален Vagrantfile (този конкретен файл няма разширение). Vagrantfile е всичко Ruby и приема редица параметри, за да помогне за конфигурирането и осигуряването на Vagrantbox за бързо, незабавно удовлетворение, на което всички сме свикнали тук в 21 век.

Струва си да се отбележи, че Vagrant се занимава директно с VirtualBox, но работи и с други програми за виртуализация. За мен повече от вероятно ще се придържам към VirtualBox, тъй като е безплатен. И безплатните като цяло са добри в моята книга.

Започвайки с VirtualBox и Vagrant

След като разбрах колко точно може да стане ръчният, досаден и просто отнемащ време само подходът към VirtualBox, аз започнах да отделя известно време за изучаване на детайлите на Vagrant и как той може значително да помогне за цялостното създаване, осигуряване и управление на виртуална машина. процес.

Реших, че първият ми стаб при създаването на виртуална машина, управлявана от Vagrant, ще бъде да създам такава, която отразява настоящата ми производствена среда за един от моите блогове.

По-долу е общият процес, който възприех, след като научих основите и работех чрез някои опити и грешки. Следвайте тези стъпки, като редактирате всяка необходима информация, специфична за вашите индивидуални нужди, и трябва да сте готови и работете с Vagrant след около 10 минути!

  1. Инсталирайте VirtualBox
  2. Инсталирайте Vagrant
  3. Създайте локална директория за Vagrant
  4. Създайте Vagrantfile в новосъздадената си директория
  5. Стартирайте vagrant и осигурете вашата виртуална машина

Забележка: стъпките по-долу са очертани така, сякаш примерният файл на Vagrant, включен в тази публикация, се използва изцяло - което означава, че всички файлови пътища и константи, посочени в този файл, също ще бъдат позовавани в инструкциите. Моля, заменете при необходимост.

1. Инсталирайте VirtualBox

За да вземете най-новата версия на VirtualBox, преминете към страницата за изтегляне и изберете версията, подходяща за вашата операционна система. Изтеглете и инсталирайте, следвайки подканите, както и всяка друга програма. И докато моята статия се фокусира основно върху опита ми с този работен процес в OS X, същите принципи и концепции трябва да се прилагат за Windows. След като бъде инсталиран, нека насочим вниманието си към Vagrant.

Забележка: към момента на писане беше инсталиран VirtualBox 5.0.20.

2. Инсталирайте Vagrant

Сега, когато VirtualBox е инсталиран, нека се съсредоточим върху инсталирането на Vagrant на вашата машина. Отново отидете на страницата за изтегляне и вземете версията, подходяща за вашата операционна система. Подобно на горе, изтеглете и инсталирайте, следвайки подканите, както бихте направили всяка друга програма.

Забележка: към момента на писане е инсталиран Vagrant 1.8.1.

3. Създайте локална директория за Vagrant

Тази стъпка се свежда до лични предпочитания за това къде искате да запазите и управлявате Vagrantfile, както и да ви предложи някои творчески опции за това как и къде искате да синхронизирате файлове и папки между вашия хост и гост машини.

Лично аз намирам, че запазването на директории за всеки екземпляр Vagrant в моята локална директория Home е лесно запомнящо се и лесно да се управлява опит.

Например, създадох директория със заглавие „new-vm“ в моята начална директория. Това е точно същата стойност за константата VM_NAME, намерена в пробата Vagrantfile в стъпка 4. След това добавих специфичния Vagrantfile към тази VM в тази директория за предоставяне.

Накратко, изпълних следните команди в Terminal:

cd ~ / && mkdir new-vm
cd new-vm && touch Vagrantfile

Първата команда се променя в моята начална директория и след това създава директорията „new-vm“ в Home. Втората команда се променя в новосъздадената директория и след това създава Vagrantfile в тази нова директория.

4. Актуализирайте своя Vagrantfile

Като следвате инструкциите от стъпка 3, сега трябва да имате уникална директория и Vagrantfile за вашата виртуална машина в рамките на вашата домашна директория на вашия Mac. Например, сега имам:

~ / Ново VM / Vagrantfile

Сега е време да прегледаме примерния Vagrantfile по-долу и да направим подходящи редакции за вашите конкретни нужди.

Примерен Vagrantfile

Следващата стъпка е да добавите инструкции във вашия Vagrantfile за Vagrant, които да се изпълняват по време на процеса на осигуряване на виртуална машина. За да ускорите този процес и да зададете шепа от типичните елементи по подразбиране, по-долу е примерен Vagrantfile, който ще ви накара да се настроите с настройка за разработка на Ubuntu Linux с Node.js и Git. Този файл работи чрез:

  1. Задаване на няколко константи около Linux OS, директории, потребители и работа в мрежа между хост / гост машини
  2. Осигуряване на виртуална машина чрез VirtualBox, с 1 процесор, 512MB памет и 40 GB място за съхранение
  3. Инсталиране на най-новите Git, Node 6.x, най-новите npm и актуализиране на Ubuntu

Извадка:

# кодиране: utf-8
# - * - режим: рубин - * -
# vi: set ft = ruby:
# Box / OS
VAGRANT_BOX = 'ubuntu / trusty64'
# Незабравимо име за вашия
VM_NAME = 'new-vm'
# VM User - „vagrant“ по подразбиране
VM_USER = 'vagrant'
# Потребителско име на вашия Mac
MAC_USER = 'Джон'
# Папка хост за синхронизиране
HOST_PATH = '/ Потребители /' + MAC_USER + '/' + VM_NAME
# Къде да се синхронизира с Guest - „vagrant“ е потребителското име по подразбиране
GUEST_PATH = '/ начало /' + VM_USER + '/' + VM_NAME
# # VM порт - коментирайте това, за да използвате NAT вместо DHCP
# VM_PORT = 8080
Vagrant.configure (2) do | config |
  # Вагрантска кутия от Хашикорп
  config.vm.box = VAGRANT_BOX
  
  # Действително име на машина
  config.vm.hostname = VM_NAME
  # Задайте име на VM във Virtualbox
  config.vm.provider "virtualbox" do | v |
    v.name = VM_NAME
    v.memory = 2048
  край
  #DHCP - коментирайте това, ако вместо това планирате да използвате NAT
  config.vm.network "private_network", тип: "dhcp"
  # # Пренасочване на порт - коментирайте това, за да използвате NAT вместо DHCP
  # config.vm.network "forwarded_port", гост: 80, хост: VM_PORT
  # Синхронизиране на папка
  config.vm.synced_folder HOST_PATH, GUEST_PATH
  # Деактивирайте папката Vagrant по подразбиране, използвайте уникален път за всеки проект
  config.vm.synced_folder '.', '/ home /' + VM_USER + '', деактивиран: true
  # Инсталиране на Git, Node.js 6.x.x, Последно npm
  config.vm.provision "черупка", вградена: << - SHELL
    apt-get актуализация
    apt-получи инсталиране -y git
    curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
    apt-get install -y nodejs
    apt-get install -y build-съществено
    npm инсталирате -g npm
    apt-get актуализация
    apt-get надграждане -y
    apt-получавам autoremove -y
  SHELL
край

След като прегледахте този примерен Vagrantfile, можете да изберете два пътя, за да продължите:

A. Фина настройка на горната проба за вашите нужди

Направете всички необходими редакции, които може да се нуждаете (като например редактиране на файлови пътища, потребителско име, VM име и т.н.) и поставете съдържанието във вашия локален Vagrantfile. След като сте готови, продължете с стъпка 5.

B. Вместо това използвайте Vagrantfile по подразбиране

Ако не харесвате горната извадка и искате да изберете избрания Vagrantfile по подразбиране, предоставен от Vagrant, можете просто да премахнете файла, който бяхме създали в стъпка 3, и да създадете нов файл, който съдържа голия минимум за предоставяне на виртуална машина с Vagrant:

cd ~ / new-vm
rm -r Vagrantfile
бродящ инит

5. „vagrant up“ и осигуряване на вашата виртуална машина

Със своя Vagrantfile на място е време да осигурите вашата виртуална машина!

Отворете терминала и въведете следните команди:

cd ~ / new-vm
бродящ

По време на този процес Vagrant ще изтегли ubuntu / trusty64 директно от Atlas на Hashicorp и след това ще предостави виртуалната машина, както е посочено във вашия Vagrantfile. В зависимост от вашата интернет връзка и скоростта на компютъра, целият процес трябва да отнеме около 3 до 5 минути. След като виртуалната машина бъде предоставена, можете да влезете във вашата виртуална машина със следната команда:

бродящ ssh

Тази команда ще се погрижи да ви свърже директно към вашия VM чрез SSH. Той борави с потребителското име и паролата - които по подразбиране са едновременно бродящи / зловещи.

Горепосочените „vagrant up“ и „vagrant ssh“ ще бъдат повече от вероятно двете фактически команди, които ще използвате за инициализиране и достъп до вашата VM. По-долу са няколко по-полезни команди, които ще ви бъдат полезни:

Включване и изключване на виртуалната ви машина

Понякога трябва да включим, изключим, да поставим на пауза или да унищожим нашите виртуални машини, управлявани от Vagrant, особено след рестартиране или тестване на нови функции и т.н.

За да включите виртуалния си компютър, отворете директорията с вашия Vagrantfile:

бродящ

За да поставите на пауза вашата виртуална машина, отворете директорията с вашия Vagrantfile:

бродяжно спиране

За да изключите вашата VM, отворете директорията с вашия Vagrantfile:

гавра спирка

За да унищожите вашата виртуална машина, отворете директорията с вашия Vagrantfile:

гавра унищожи

Това са само няколко от непосредствените основни команди, които ще искате да научите, докато използвате Vagrant. За много по-задълбочено ръководство вижте документите от Vagrant.

Следващи стъпки

Направихте го! Сега, когато можете лесно да създавате виртуални машини с помощта на Vagrant и можете лесно да SSH направо във вашата собствена виртуална машина, работеща с Ubuntu 14.04, небето е границата! Продължете напред и използвайте този VM точно както бихте направили всяка друга виртуална машина на Linux чрез доставчик като Digital Ocean или други, които предлагат VPS услуги.

Най-хубавото е, че вече можете да създадете толкова много виртуални машини, колкото вашата система е в състояние да работи - да отворите портите за наводнение за растеж и проучване с новоприетия модулен и минимален подход!

Продължавайте кодирането!

Наслаждавате се на това, което сте чели?

Не забравяйте да харесате и да споделите по-долу, или дори да ми купите кафе ️!

Джон Фодераро е фанатик на JavaScript, разположен в Ню Джърси.