Статьи

Начало работы с Vagrant в Windows

настройка виртуальной машины на лету

Эта популярная статья была полностью обновлена ​​в 2017 году. Изменения включают информацию об открытых ключах, советы по устранению неполадок и обновления для Windows 10 и другого соответствующего программного обеспечения.

Vagrant быстро стал повсеместно распространенным инструментом для локальной разработки в операционных системах Mac, Windows и Linux.

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

Это отличный инструмент, если вы хотите запустить серверы для тестирования программ, узнать, как использовать инструменты Linux или работать в тестовой среде, прежде чем вносить изменения в производственную систему. Вы хотите научиться устанавливать стек PHP / Apache / MySQL с нуля в Ubuntu? Или поиграть с настройкой сервера кеша вроде Varnish перед Apache? Попробуйте свои силы в Nginx? Выучить PHP 7? Vagrant делает все немного проще, чем использование одного VirtualBox.

Бродячий логотип

Давайте посмотрим, как настроить Vagrant в среде Windows.

Установка мегабит и кусков

Для начала, установите эти основные инструменты:

  • VirtualBox (программное обеспечение, которое создает виртуальные машины)
  • Vagrant (наш герой, программное обеспечение, которое развертывает виртуальные машины и запускает сценарии подготовки)
  • PuTTY и PuTTYGen (SSH-клиент и генератор для ключей безопасности)

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

Создайте свои проекты

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

Создайте папку проекта, я использовал E:\Vagrant\sitepoint .

Совет: Как пользователь Windows, вы можете быстро открыть командную строку из Проводника, удерживая клавишу Shift и щелкнув правой кнопкой мыши папку или пробел внутри папки, а затем выбрав «Открыть окно командной строки здесь».

Использование Vagrant

Основными командами для запуска являются vagrant init и vagrant up .

Откройте командную строку и измените каталоги в папке вашего тестового проекта. Запустите vagrant init и в текущем каталоге будет создан новый vagrant-файл с именем «Vagrantfile» (без расширения), который содержит базовую начальную конфигурацию.

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

Этот Vagrantfile еще не указывает на какую-либо виртуальную машину, так что давайте удалим Vagrantfile, который вы только что создали, и давайте найдем «базовый блок» для использования.

Найдите в Vagrant Cloud базовые блоки, которые вы хотели бы использовать. В этом примере мы будем использовать «ubuntu / trusty64», который является «официальным» базовым блоком для Ubuntu Server 14.04 LTS (Trusty Tahr). Чтобы Vagrant автоматически использовал этот базовый блок, введите:

 vagrant init ubuntu/trusty64 

На этот раз, если вы откроете Vagrantfile, вы заметите, что там указан базовый блок для «config.vm.box». Другие настройки все еще закомментированы.

Бродячий инициат

Теперь, когда у вас есть Vagrantfile с настроенным базовым блоком, вы можете раскрутить виртуальную машину с помощью этой удивительной команды:

 vagrant up 

Бродячий до

Чтобы объяснить, что здесь происходит, Vagrant сначала импортирует базовую коробку, если у вас ее еще нет (у меня она уже была, иначе она сначала загрузится). Затем он проверяет, обновлена ​​ли ваша коробка.

Примечание. Эти базовые блоки %userprofile%/.vagrant.d/boxes в папке %userprofile%/.vagrant.d/boxes . Вы можете получить список всех установленных ящиков, набрав vagrant box list . Вы можете удалить ящики с vagrant box remove box/name .

Вы можете видеть, что он устанавливает порт переадресации SSH как «2222»: он понадобится вам для использования клиента SSH, такого как PuTTY.

Обратите внимание, что имя пользователя «vagrant», которое всегда будет. Вы также заметите, что он генерирует новый набор ключей, чего Вагрант не делал в предыдущих версиях. Открытый ключ автоматически копируется в виртуальную машину и заменяет там ключ по умолчанию. Он также помещает закрытый ключ в новую папку с именем «.vagrant» в папке вашего проекта. Если вы углубитесь в эту папку, вы найдете «private_key», который будет полезен для использования в PuTTY позже.

Затем обратите внимание, что он проверяет наличие гостевых дополнений и монтирует общую папку между хостом и гостем. Это можно изменить по своему усмотрению или добавить дополнительные общие папки. Первая папка «/ vagrant» находится на ВМ; он будет доступен в моей локальной папке проекта. Файлы будут синхронизироваться между папками во время работы.

Теперь я могу получить доступ к своему серверу, верно?

Да! Вид!

Видите ли, Vagrant должен иметь возможность войти на новый сервер и выполнить дополнительные действия, такие как настройка настроенного IP-адреса, переадресация портов, общие папки, гостевые дополнения VirtualBox и т. Д. Для этого требуются все базовые блоки. чтобы уже был установлен открытый ключ Vagrant, а также пользователь с именем «vagrant» с привилегиями sudo без пароля.

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

Проблема, с которой мы сталкиваемся сейчас, заключается в том, что Windows не поставляется с клиентом командной строки SSH. Это означает, что встроенные функции SSH Vagrant не обязательно будут работать для нас, пользователей Windows. Но именно поэтому у нас есть шпаклевка. Введите это, чтобы получить информацию SSH всякий раз, когда вам это нужно:

 vagrant ssh-config 

Он скажет вам IP-порт и SSH-порт для использования, а также несколько других бит информации, если вы забудете.

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

Откройте PuTTY, введите IP-адрес и порт, дайте имя соединению и сохраните его. Теперь вы можете подключиться к новому серверу через SSH с помощью PuTTY. Имя пользователя «vagrant», и пароль также должен быть «vagrant», но в особых случаях его можно индивидуализировать для базового блока.

Бродяга с замазкой

Vagrant автоматически выберет другой порт, если будет выбран 2222 по умолчанию. Все ваши виртуальные машины получат новый порт, поэтому обязательно обратите внимание, какая виртуальная машина какая!

Примечание: вы можете установить Windows SSH-клиент, такой как Cygwin или MinGW . Даже Git поставляется с SSH-клиентом. Наберите vagrant ssh и посмотрите, что получится! У пользователей Linux и Mac уже должны быть клиенты SSH. Если у вас нет клиента, Vagrant покажет вам несколько вариантов.

Использование открытых и закрытых ключей

Вы можете использовать созданный новый закрытый ключ Vagrant, так как закрытый ключ хранился на вашем локальном компьютере. Однако PuTTY не может использовать ключ стиля OpenSSH. Вот почему мы загрузили PuTTYGen, так что откройте его сейчас.

Нажмите «Загрузить» и перейдите к папке вашего проекта вплоть до **\\.vagrant\machines\default\virtualbox** . Переключитесь, чтобы увидеть «все файлы», выберите «private_key» и нажмите «Открыть».

Вы можете сразу же нажать кнопку «Сохранить личный ключ», выбрать «Да», чтобы сохранить без пароля. Назовите это что-то похожее на «private_key_putty» в той же папке. Это создаст файл с расширением .PPK . Закройте PuTTYGen и вернитесь в PuTTY сейчас.

Сохранить закрытый ключ

В PuTTY загрузите соединение с новым сервером или введите его снова, если вы его не сохранили. Затем перейдите в Connection-> SSH-> Auth на боковой панели и нажмите «Обзор», чтобы найти закрытый ключ. Вы увидите версию PPK, но не другую, поскольку PuTTY не использует этот тип. Теперь обязательно сохраните свою конфигурацию, чтобы вы могли использовать ее позже.

Закрытый ключ в PuTTY

После этого в следующий раз, когда вы откроете это соединение и введете «vagrant» в качестве пользователя, оно автоматически аутентифицируется с помощью ключа, и вы войдете в систему без ввода пароля.

Вы можете сделать еще один шаг и сделать так, чтобы PuTTY автоматически вводил имя пользователя. Перейдите в конфигурацию PuTTY в Connection> Data и введите «vagrant» в поле «Auto-login username». Теперь, когда вы откроете сохраненное соединение, PuTTY автоматически введет имя пользователя и войдет в систему с вашим личным ключом!

Дополнительные замечания

Vagrantfile — это место, где начинается вся конфигурация. Этот файл предназначен для управления системой контроля версий, и вы можете поделиться своими настройками разработки с командой. Если все используют один и тот же бродячий файл, они получат одинаковую настройку виртуальной машины с одинаковыми полями и условиями. Обратите внимание, что сценарии можно назвать внешними по отношению к этому файлу, а это означает, что в некоторых сложных бродячих проектах может быть много файлов и папок.

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

Vagrant создает общую папку между папкой вашего проекта и папкой в ​​вашей виртуальной /vagrant по умолчанию является /vagrant . Часто ящики используются в качестве машин для разработки, поэтому общей папкой для совместного использования также является ваша папка Apache или Nginx www или public_html.

ПРИМЕЧАНИЕ. Vagrant автоматически перенаправляет порт 22, чтобы вы могли войти в него, но он не пересылает автоматически веб-порт, например 80, в случае, если вы выполняете работу веб-разработчика. Вам нужно будет открыть Vagrantfile и раскомментировать строку, которая перенаправляет порт 80, чтобы включить его. Просто прочитайте заметки в файле, как. После редактирования вы захотите выполнить vagrant reload .

Вы можете отключить виртуальную машину с помощью vagrant halt или приостановить ее с помощью vagrant suspend . Затем включите его снова в любое время с vagrant up . Введите vagrant status чтобы увидеть текущее состояние виртуальной машины.

Все команды можно найти здесь .

СОВЕТ: В Vagrant Manager вы найдете визуальный инструмент System Tray для управления локальными виртуальными машинами. Также доступно для пользователей Mac.

Дополнительная безопасность

Поскольку каждый может создавать базовые блоки, правила Vagrant гласят, что он должен создать пользователя и пароль vagrant / vagrant. В нем также говорится, что он не ожидает, что пользователь root имеет какой-либо пароль, то есть он не использует root или не ожидает пароль для него. Если вы чувствуете необходимость, было бы полезно узнать, какие пользователи и пароль по умолчанию находятся на коробке, которую вы выбираете для установки.

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

Vagrant устанавливает привязку портов SSH к localhost, поэтому он не будет принимать подключения извне. Это можно изменить, если вы хотите получить доступ к вашей виртуальной машине с другого хоста в другом месте. Вам понадобится дополнительная конфигурация, чтобы сделать это.

Потенциальные проблемы

Судя по отзывам, были проблемы с использованием Vagrant. Чтобы быть кратким, вот несколько моментов, чтобы рассмотреть, если у вас есть проблемы:

  • Убедитесь, что Vagrant может общаться с защищенными сайтами через https. Единственное, что здесь может помешать — это брандмауэры или ограниченные учетные записи пользователей.
  • BIOS вашего компьютера может иметь настройки для включения виртуализации, которые должны быть включены. Вам нужно будет найти руководство по материнской плате, чтобы увидеть, где будут эти настройки. Большинство современных компьютеров уже много лет будут иметь настройки по умолчанию для включения виртуализации.
  • У меня лично недавно была проблема, когда последняя версия VirtualBox не работала с последней Vagrant. Мне пришлось установить предыдущую версию VirtualBox. Вы можете попробовать предыдущую версию в крайнем случае, если ничего не работает.
  • Если Vagrant испытывает затруднения при связи с Atlas для базовых блоков, вам может потребоваться распространяемый пакет Microsoft Visual C ++ 2010 . Эта проблема устарела и, возможно, уже исправлена, но вы можете прочитать об этом на GitHub здесь .
  • Атрибуты файловой системы расширенного Linux могут не работать, такие как символические ссылки и определенные разрешения. Была проблема с общими папками и длинными путями к файлам (например, что создает NPM), но это было исправлено в более поздних версиях Vagrant. Читайте об этом здесь .

Следующие шаги?

Теперь, когда вы узнали, как работает Vagrant, вы захотите пойти дальше. Помимо Vagrant Cloud вы можете найти дополнительные поля, такие как vagrantbox.es . Использовать ящик из другого источника так же просто, как набрать vagrant init box/name url где вам будут предоставлены «box / name» и «URL».

Джордж Фекете рассказал, как создать свою собственную базовую коробку .

Вы даже можете использовать DigitalOcean в качестве поставщика и развертывать капли с помощью Vagrant.

Инструменты автоматизации, такие как PuPHPeT и Protobox, помогают создавать сценарии инициализации для развертывания более полнофункциональных виртуальных машин разработки.

Возможно, вы слышали о популярной коробке Vagrant Laravel Homestead, которую можно использовать для развертывания сервера разработки для проектов Laravel. Бруно Скворц из SitePoint построил Homestead для создания того, что он называет Homestead, улучшенным с помощью некоторой альтернативной конфигурации для веб-разработки. Это поле часто используется в руководствах по SitePoint.

Прочтите статью Бруно « Повторное знакомство с Vagrant» для более подробной информации об инструментах веб-разработки и стеке LAMP с использованием Vagrant.

Существует блок под названием VVV, который не только создает блок разработки для разработчиков WordPress, но и фактически устанавливает его так, что вы можете разместить несколько сайтов WordPress на одной виртуальной машине. Homestead делает то же самое, поэтому вы не используете одну виртуальную машину для каждого проекта, над которым работаете. Александр Коко тоже писал о ВВВ .

Небо — предел, так что прыгайте и ищите классные коробки, предоставляя сценарии или создавайте свои собственные!

Я надеюсь, что это поможет вам начать! Дайте нам знать в комментариях, если вы наконец-то сделали решающий шаг, и работает ли он на вас.