Ошибки запуска vagrant под ubuntu. Vagrant — единое окружение для разработки

Vagrant работает с виртуальными машинами, а значит для виртуализации ему необходим какой-либо"провайдер". И для нашего примера подойдет VirtualBox.

Установка VirtualBox 5 на Windows 10

Для начала качаем VirtualBox с официального сайта последнюю версию (на текущий момент 5.2.18). Для этого после перехода по ссылке на страницу загрузки кликаем по ссылке Windows hosts:

Загруженный файл VirtualBox-5.2.18-124319-Win.exe запускаем для установки VirtualBox. Сам процесс установки сводится к нажатию нескольких кнопок "Next" и ожиданию завершения процесса. После запуска установщика появится следующее окно:

Здесь нажимаем Next.

На следующем этапе выбираем все компоненты для установки (выбраны по умолчанию) и нажимаем Next:

На следующем этапе указываем дополнительные настройки (если нужно) или оставляем все по умолчанию и нажимаем кнопку Next:


Наследующем этапе подтверждаем установку виртуального адаптера (то есть нажимаем Yes):

И на завершающем этапе нажимаем кнопку "Install":

В процессе установки, если включен контроль учетных записей,может появится следующее окно подтверждения действия. В нем нажимаем "Да". После чего начнется процесс непосредственной установки.

Так же в процессе установки VirtualBox 5 на Windows 10 появится диалоговое окно с подтверждением установки дополнительного программного обеспечения:

Здесь мы нажимаем кнопку "Установить".

И после завершения установки появляется диалоговое окно:

На этом процесс установки VirtualBox на Windows 10 завершен.

Установка Vagrant на Windows 10

Для установки Vagrant необходимо скачать пакет с файлами для установки,который доступен по ссылке . В появившемся окне выбираем последнюю версию установщика (на момент написания статьи 2.1.5):


И выбираем файл с расширением.msi для установки на Windows:

После скачивания запускаем файл vagrant_2.1.5_x86_64.msi. В результате появится диалоговое окно с приветствием:

На следующем этапе соглашаемся с правилами пользования (устанавливаем галочку в поле "I acept...") и нажимаем Next:

На следующем этапе указываем каталог, в который будет установлена программа. Можно оставлять путь по умолчанию, только обязательно запоминаем, куда устанавливаем (можно скопировать путь):

И в следующем окне нажимаем кнопку "Install":

Ожидаем окончания установки:

После чего появится окно с результатами завершения установки:

После завершения установки Vagrant на Windows 10 появится окно с просьбой о перезагрузке компьютера:

Здесь нажимаем "Yes" и ожидаем перезагрузки компьютера. Если необходимо вручную завершить работу других программ (или сохранить изменения в важных документах), то нажимаем кнопку "No" и потом перезагружаем компьютер вручную.

Внесение изменений в переменные среды

После перезагрузки компьютера обязательно необходимо добавить переменную vagrant в системные переменные. Это нужно для того, чтобы в командной строке можно было вызывать Vagrant при помощи одной команды: vagrant.

Изменения в переменные среды мы будем вносить при помощи командной строки, а конкретно в переменную PATH мы будем добавлять путь до каталога, куда установлен Vagrant (в нашем случаем это: C:\HashiCorp\Vagrant\bin).

Вызываем командную строку следующим образом:

1. нажимаем на клавиатуре клавиши Ctrl+R для вызова окна "Выполнить".
2. В появившемся окне набираем команду: cmd
3. Нажимаем кнопку ОК:

В итоге должны получить следующее:

В окне командной строки добавляем следующую команду: set PATH=%PATH%;C:\HashiCorp\Vagrant\bin

и нажимаем клавишу Enter:


И теперь для проверки того, удалось ли нам прописать путь к Vagrant в переменные среду, в этом же окне командной строки набираем команду: vagrant -v

и нажимаем клавишу Enter:


И при помощи данной команды мы получим информацию о версии установленного Vagrant. Если все получилось так, как и в статье, значит все сделали верно.

На этом процесс установки и настройки Vagrant и VirtualBox на Windows 10 завершен.

Создание виртуальной машины в Vagrant на Windows 10

Для создания виртуальной машины для начала создадим отдельный каталог, например, VagrantVM:

В командной строке откроем этот каталог. Для этого будем использовать команду cd. В нашем случае каталог располагается по следующему пути:

C:\VM"s\VagrantVM

Значит в командной строке выполняем следующую команду:

Cd C:\VM"s\VagrantVM

В результате получим следующее:


Для примера будем использовать сборку ubuntu/trusty64. Чтобы ее запустить на виртуальной машине, нужно сначала инициализировать бокс с этой сборкой. Для этого в командной строке выполняем команду:

Vagrant init ubuntu/trusty64

В результате получим следующее сообщение:



Теперь запустим проинициализированный бокс:

Vagrant up

После запуска данной команды начнется запуск загрузки и настройки виртуальной машины. После завершения этой операции в VirtualBox появится новая виртуальная машина:



Работать с этой виртуальной машиной можно через SSH. Для этого нам потребуется программа PuTTY, которую можно скачать отсюда (процесс установки описывать не будем, он достаточно прост).

Так же можно с виртуальными машинами Vagrant работать и из командной строки. В том же окне командной строки выполняем команду:

Vagrant ssh

В результате появится запрос на ввод пароля:

Пароль по умолчанию: vagrant. Имя пользователя: vagrant. Потому вводим здесь пароль: vagrant. И нажимаем клавишу Enter.

В результате после ввода пароля окно получаем следующее:

то есть попадаем в оболочку Ubuntu. Здесь можно непосредственно работать с виртуальной машиной при помощи командной строки.

Чтобы вернуться из этого режима в нормальный режим командной строки Windows, выполняем команду: exit

Для работы с виртуальной машиной через программу PuTTY, указываем следующие параметры для соединения с виртуальной машиной:



И нажимаем кнопку Open. В появившемся диалоговом окне нажимаем Да:


В результате получаем следующее:



Здесь необходимо ввести логин и пароль (как мы ранее определились, по умолчанию vagrant/vagrant):



***Примечание: при вводе пароля символы не будут отображаться (никак, даже звездочками).

Чтобы завершить работу запущенного бокса, в окне командной строки выполняем команду:

Vagrant halt

***Если окно командной строки ранее было закрыто, то необходимо снова его запустить и открыть при помощи команду cd каталог, в котором находится наша виртуальная машина.

На этом закончим данную статью. В следующих статьях подробнее разберем, как на виртуальной машине Vagrant можно настроить веб-сервер.

Что такое Vagrant?

Я бы описал Vagrant - как надстройка над виртуальными машинами (VirtualBox, VMWare) со своей инфраструктурой. Vagrant позволяет с помощью заранее подготовленных инструкций развернуть подобие серверного окружения на своей локальной машинке (сколько часов отладки было потрачено из-за отличий окружений (dev, test, prod), в которых запускается разрабатываемое ПО). Поговаривают, что Vagrant в силах решить эти проблемы. Проверим так ли это, и не принесет ли он больше сложностей нежели профита.

Определения

# название бокса на основе которого будет разворачиваться виртуалка

config.vm.box = "lucid10x64"

# Проброс портов (8080 нашей машинки на 80 виртуалки)

config.vm.network:forwarded_port, host: 8080, guest: 80

# 2х сторонняя синхронизация каталога (локальный, виртуальный)

config.vm.synced_folder "/home/stas/www/vagrant/src", "/var/www"

Примечание

По умолчанию текущий каталог проекта (в котором находится Vagrantfile ) уже синхронизируется с директорией /vagrant (в корневой на виртуальной системы). DocumentRoot веб сервера Apache завернут на этот же каталог. Поэтому, дополнительно синхронизацию на /var/www указывать не нужно, но я привел этот конфиг как пример для бокса, у которого не будет предустановленного Apache .

Примечание

Для проверки окружения виртуальной машины, нужно создать файл index.php внутри вашего проекта и перезагрузить конфиг Vagrant :

vagrant reload

После этого откройте в браузере страницу http://localhost:8080 - это и будет ваш index.php .

Подготовить окружение виртуальной машины (provision , обеспечение) под наш проект мы можем несколькими способами. Один из них, это запуск shell скрипта, в котором прописываются все действия необходимые для настройки окружения. Давайте установим mc ( пример установки Apache). Создайте в корне проекта файл bootstrap.sh :

#!/usr/bin/env bash

apt-get update

apt-get install mc

И пропишите в Vagrantfile что необходимо запустить этот скрипт после старта виртуальной машины:

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

Перезагрузите конфиг с обновлением обеспечения :

vagrant reload --provision

Управление

Команды для управления виртуальной машиной:

vagrant ssh # подключиться по SSH под юзером vagrant

vagrant suspend # поставить на паузу

vagrant halt # выключить

vagrant reload # перезагрузить конфиг (без выполнения provision)

vagrant reload --provision

vagrant destroy # удалить виртуалку

vagrant box list # cписок доступных "боксов"

Будьте бдительны!

Пользователь vagrant имеет право выполнять команды под рутом (sudo ) без пароля.

Кастомизация

VAGRANT_HOME - переменная окружения, содержит путь к каталогу с VagrantBox"ами (как установить переменную окружения ).

Вопросы

В: Где будет расположен/скрипты код, с которым мы работаем? Постоянно синхронизироваться? А это быстро?

О: Код, с которым вы работаете будет располагаться в локальном каталоге. Каталог проекта уже по дефолту синхронизируется с виртуальной машиной.

В: Сколько времени займет развертывание типичного LAMP сервера?

О: Скачивание Vagrant Box ~ 20 мин. Если файл конфигурации уже описан, тогда все зависит от окружения и зависимых пакетов - все зависимости будут скачиваться и устанавливаться (если только они не включены в сам бокс). Если вы только начинаете настройку окружения и виртуалки - готовьтесь потратить от часа на описание нужного окружения.

В: Средний расход ресурсов на обслуживание одного LAMP окружения?

О: Прикидываю как бы замерять расход памяти по нескольким процессам...

— это программа-ассистент по сборке и управлению виртуальными машинами. С её помощью можно автоматизировать процесс развёртывания кастомных (с пользовательскими настройками) виртуальных машин.

Суть работы Vagrant в том, что она с помощью написанных специально для этой программы конфигурационных файлов, собирает виртуальные машины, в которых уже применены определённые настройки. Авторы некоторых систем распространяют их в виде такого конфигурационного файла Vagrant и получив этот файл мы можем собрать на своём компьютере эту ОС. Мы можем использовать конфигурации по умолчанию или вносить в них изменения. В результате будут получаться ОС от автора, но с определённым тюнингом.

Как установить Vagrant в Linux

Поскольку Vagrant это всего лишь надстройка над VirtualBox , то начать нужно с установки VirtualBox .

Теперь, когда VirtualBox уже есть в вашей системе, то поищите vagrant в стандартных репозиториях вашей системы — скорее всего, он там уже есть.

Для установки в Ubuntu, Linux Mint, Debian, Kali Linux и их производные выполните команду

Sudo apt install vagrant

Для установки в Arch Linux, BlackArch и их производные выполните команду:

Sudo pacman -S vagrant

Как установить Vagrant в Windows

Для Vagrant в Windows также имеется графический установщик, скачайте его и выполните установку.

В качестве папки установки Vagrant выбирает не C:\Program Files\, а другую папку, это позволяет программе проще работать с разрешениями и правами доступа:

После перезагрузки откройте командную строку Windows. Это можно сделать нажав Win+x , в открывшемся окне выберите Windows PowerShell (администратор) . В открывшемся окне для перехода из PowerShell в командную строку введите

В этой консоли выполните команду:

Должна появиться стандартная справка по пользованию программой:

Если возникнет ошибка, либо просто для профилактики, выполните обновление плагинов:

Vagrant plugin update

Установка плагина vagrant-vbguest

vagrant-vbguest — это плагин Vagrant, который автоматически устанавливает в гостевые системы VirtualBox Guest Additions — гостевые дополнения VirtualBox.

Независимо от операционной системы, плагин должен устанавливаться одинаково следующей командой:

Vagrant plugin install vagrant-vbguest

Если в Windows у вас проблемы с установкой этого плагина, то попробуйте следующую команду:

C:\vagrant\vagrant\embedded\bin\gem.bat install vagrant-vbguest

Также в Windows файервол может запросить разрешение для выхода в сеть программой:

Плагин vagrant-vbguest запускается и используется по умолчанию всеми виртуальными машинами. Он запускается автоматически сразу после старта коробки (так в Vagrant называют виртуальные машины). Получается что он работает каждый раз при загрузке коробки, то есть при использовании команд vagrant up или vagrant reload . Он не будет работать при команде vagrant resume (или vagrant up на приостановленной коробке) чтобы не тратить время при возобновлении работы виртуальной машины.

Чтобы отключить этот плагин, в настройках виртуальных машин установите vbguest.auto_update на false .

Как пользоваться Vagrant

Vagrant собирает виртуальные машины исходя из конфигурационного файла Vagrantfile . Вы можете создавать и использовать для быстрого развёртывания свои варианты, либо устанавливать различные операционные системы подготовленные другими. Большой сборник содержится в , там вы можете выбрать заинтересовавшую вас коробку и собрать, а затем запустить с помощью команды вида:

Например, offensive-security подготовили kali-linux-light ,

тогда установка и запуск выполняются командами:

Vagrant init offensive-security/kali-linux-light vagrant up

Примеры других популярных систем:

Для разных систем выделите отдельные папки, то есть запускайте приведённые выше команды в разных папках.

Vagrant умеет не только скачивать и запускать коробки, он также умеет запускать внутри них пользовательские скрипты — поэтому некоторые системы могут устанавливаться сложнее, чем показано здесь. Для них может потребоваться скачивание полного архива. Затем нужно будет перейти в папку, содержащую файл Vagrantfile и уже там запустить vagrant up .

Vagrant — это средство для управления виртуальными средами. Vagrant полностью решает такие проблемы, как: у вас на компьютере сайт работает, а на сервере нет. Или когда код написанный вашим колегой работает у него, но не хочет работать у вас.

Как устроен Vagrant

Основа Vagrant’а — это box’ы. Box — это файл с полностью настроенной и готовой к использованию виртуальной средой. Например, я в работе использую связку Nginx + PHP-FPM + MySQL (LEMP) и у меня есть готовый box , который настроен идентично моему рабочему серверу. Box’ы удобно передавать коллегам для обеспечения идентичной среды разработки у всей команды.

Все настройки виртуальной машины (сколько выделять памяти, какие каталоги делать общими с вашей основной системой и пр.) содержатся в одном файле, который называется Vagrantfile. Также с помощью этого файла можно указать какие команды должны быть выполнены при первом запуске Vagrant. Например, можно создать базу данных с определённым именем или настроить Nginx.

Как пользоваться Vagrant

Vagrant используется из командной строки. Команды лакончины, просты для запоминания и логичны. Так, например, чтобы запустить виртуальную среду достаточно выполнить команду: vagrant up . Обычно, последовательность работы с Vagrant выглядит следующим образом:

  1. устанавливаем нужный нам box командой vagrant box add [имя box"а] ;
  2. создаём Vagrantfile командой vagrant init и настраиваем его;
  3. запускаем Vagrant командой vagrant up ;
  4. после работы останавиливаем Vagrant командой vagrant halt ;
  5. когда проект закончен, удаляем виртуальную среду командой vagrant destroy.

Где взять box’ы

Тысячи готовых box’ов на все случаи жизни можно найти на сайте HashiCorp . Кроме настроенных сред там есть чистые установки популярных операционных систем. Такие box’ы можно использовать как основу для своего собственного box’а, если нужно что-то специфичное. Собственные box’ы также можно распространять, если зарегистрироваться на указанном выше сайте.

Homestead — это специально подготовленный разработчиками Laravel образ Ubuntu Linux , включающий в себя все необходимые инструменты для создания приложений на этом замечательном фреймворке. В официальной документации Laravel процесс установки Homestead описан довольно неплохо, но всё же содержит некоторые пробелы. Их я и попытаюсь заполнить в этой статье.

Итак, приступим. Первым делом нужно установить VirtualBox и Vagrant .

Последнюю версию VirtualBox можно скачать на странице https://www.virtualbox.org/wiki/Downloads . При установке можно оставить все настройки по умолчанию.

Установщик Vagrant скачиваем на странице https://www.vagrantup.com/downloads.html . По умолчанию программа устанавливается в корень диска C:\ , в папку HashiCorp\Vagrant\ . Я предпочитаю изменить этот путь на C:\Program Files (x86)\HashiCorp\Vagrant\ . После установки Vagrant потребуется перезагрузить компьютер.

Теперь нужно добавить бокс laravel/homestead в Vagrant . Открываем командную строку Windows от имени администратора (сочетание клавиш Win+R , затем команда cmd в окне Выполнить ) и выполняем следующую команду:

Vagrant box add laravel/homestead

В консоли Вы увидите примерно следующее:

Процесс загрузки займёт некоторое время, в зависимости от скорости вашего интернет-соединения.

Устанавливать Homestead будем при помощи Git . Скачать его последнюю версию можно на странице https://git-scm.com/downloads . При установке все настройки можно оставить по умолчанию. Чтобы команда git стала доступна в консоли Windows , также потребуется перезагрузить компьютер.

Теперь нужно клонировать репозиторий Homestead CLI в произвольную директорию, например в вашу домашнюю папку. Для этого запустите консоль Windows от имени администратора и выполните следующую команду:

Git clone https://github.com/laravel/homestead.git Homestead

На экране вы увидите следующее:


При этом в вашем домашнем каталоге будет создана папка Homestead . Перейдите в неё и запустите файл init.bat , он создаст конфигурационный файл Homestead.yaml в папке .homestead в вашей домашней директории.


Теперь создадим SSH-ключи для доступа к нашей виртуальной машине. Для этого нужно открыть терминал Git (например, щёлкнув на экране правой кнопкой мыши и выбрав из контекстного меню пункт Git Bash Here ) и выполнить следующую команду:

Ssh-keygen -t rsa –C "[Ваш email]"

При запросе пути к каталогу для сохранения файла ключей просто нажмите Enter , при этом будет выбрано значение по умолчанию указанное в скобках (в домашней директории будет создана папка .ssh , в которую будут помещены файлы ключей). Также необходимо будет ввести и подтвердить пароль для ключей.


Чтобы Vagrant использовал именно эти ключи, а не создавал новые файлы ключей при каждом запуске из-за настроек безопасности, нужно добавить следующую строчку в файл Vagrantfile в папке Homestead :

Config.ssh.insert_key = false

После этого он должен выглядеть примерно так:

# -*- mode: ruby -*- # vi: set ft=ruby: require "json" require "yaml" VAGRANTFILE_API_VERSION = "2" confDir = $confDir ||= File.expand_path("~/.homestead") homesteadYamlPath = confDir + "/Homestead.yaml" homesteadJsonPath = confDir + "/Homestead.json" afterScriptPath = confDir + "/after.sh" aliasesPath = confDir + "/aliases" require File.expand_path(File.dirname(__FILE__) + "/scripts/homestead.rb") Vagrant.require_version ">= 1.8.4" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.ssh.insert_key = false if File.exist? aliasesPath then config.vm.provision "file", source: aliasesPath, destination: "~/.bash_aliases" end if File.exist? homesteadYamlPath then settings = YAML::load(File.read(homesteadYamlPath)) elsif File.exist? homesteadJsonPath then settings = JSON.parse(File.read(homesteadJsonPath)) end Homestead.configure(config, settings) if File.exist? afterScriptPath then config.vm.provision "shell", path: afterScriptPath, privileged: false end if defined? VagrantPlugins::HostsUpdater config.hostsupdater.aliases = settings["sites"].map { |site| site["map"] } end end

Всё почти готово к запуску, осталось совсем немного.

Для начала откроем файл Homestead.yaml (помните, он находится в папке .homestead в нашей домашней директории). Вот его содержимое:

Ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox authorize: ~/.ssh/id_rsa.pub keys: - ~/.ssh/id_rsa folders: - map: ~/Code to: /home/vagrant/Code sites: - map: homestead.app to: /home/vagrant/Code/Laravel/public databases: - homestead # blackfire: # - id: foo # token: bar # client-id: foo # client-token: bar # ports: # - send: 50000 # to: 5000 # - send: 7777 # to: 777 # protocol: udp

Здесь содержатся настройки виртуальной машины. В принципе, все они вполне работоспособны, нужно лишь внести небольшие изменения в нашу операционную систему. В первую очередь создадим папку Code в нашей домашней директории. Через эту папку мы сможем работать с сайтом, который будет доступен по адресу http://homestead.app . Чтобы получить возможность обращаться к этому сайту из браузера, добавим следующую строку в файл hosts , находящийся в директории C:\Windows\System32\drivers\etc\ :

192.168.10.10 homestead.app

SSH-ключи уже созданы и находятся в нужной директории.

Всё готово к запуску системы. Перейдите в директорию с установленным Homestead , откройте терминал и выполните комнаду vagrant up .





Поздравляю! Мы запустили виртуальную машину Homestead . Проверить её статус можно с помощью команды vagrant status , для остановки виртуальной машины используйте команду vagrant halt .

Открыв страницу http://hometead.app вы увидите следующее:


Это всего лишь означает, что в рабочей директории сайта, определённой в файле Homestead.yaml , пока что нет файлов. Это легко исправить, добавив файлы сайта в папку Code\Laravel\public\ (такая конфигурация очень удобна для установки Laravel : скопировав дистрибутив в папку Laravel мы получаем доступ к папке public через браузер, сами файлы движка при этом остаются недоступными извне).

Осталось настроить доступ к виртуальной машине через SSH.

Скачиваем SSH-клиент PuTTY на странице http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html . Предлагаю скачать ZIP-архив и распаковать его в папку Putty в вашей домашней директории. Запустите файл PUTTY.exe . Подключиться можно со следующими параметрами:

  • Логин: vagrant
  • Пароль: vagrant
  • Адрес сервера: 127.0.0.1
  • Порт: 2222

Введите все эти параметры (кроме пароля) в окне PuTTY Configuration и нажмите кнопку Open .


Введите пароль в окне терминала (пароль не отображается при вводе, и может сложиться впечатление, что терминал завис, однако это не так) и нажмите Enter . После этого вы сможете работать с виртуальной машиной через SSH.


Можно автоматизировать процесс подключения, исключив необходимость каждый раз вводить все данные и пароль. Данные для подключения мы сохраним в PuTTY , для подключения будем использовать ранее сгенерированный SSH-ключ.

Проблема в том, что PuTTY использует собственный формат приватных ключей для подключения. К счастью, в его составе есть утилита для конвертации стандартных файлов ключей. Запустите PUTTYGEN.EXE , нажмите кнопку Load и выберите ранее сгенерированный с помощью Git файл приватного ключа id_rsa (для возможности выбора установите режим просмотра на показ всех файлов в выпадающем меню справа от поля Имя файла ).



После выбора потребуется ввести пароль, использованный вами при генерации ключа. Файл ключа будет загружен и сконвертирован в формат PuTTY . Очистите поля Key passphrase и Confirm passphrase , чтобы впоследствии подключаться без пароля.


Теперь нажмите кнопку Save private key и сохраните ключ в той же папке под именем id_rsa.ppk , предварительно согласившись на создание ключа без пароля.

Снова откройте PUTTY.EXE . В разделе Session введите настройки подключения, как делали до этого. Затем перейдите в раздел Connection→ SSH→ Auth , нажмите кнопку Browse и выберите ранее сгенерированный файл приватного ключа.


Вернитесь в раздел Session и сохраните конфигурацию. Для этого в поле Saved Sessions введите произвольное имя конфигурации (например Homestead) и нажмите кнопку Save .


Для подключения дважды кликните по имени сохранённой конфигурации в списке.


На этом настройку рабочей среды Homestead можно считать завершённой.

Публикации по теме