Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. DevOps

Введение в Vagrant

by
Difficulty:IntermediateLength:MediumLanguages:

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

Обзор

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

В этом уроке я покажу вам, как настроить Vagrant и начать изучать множество возможностей, которые он предоставляет.

Недавно Vagrant добавил поддержку контейнеров Docker, но я не буду обсуждать это в данном уроке.

Установка

  1. Загрузите бесплатный VirtualBox для своей операционной системы с веб-сайта VirtualBox.
  2. После загрузки просто запустите бинарный файл и установите его.
  3. Скачайте Vagrant.
  4. Опять же, просто запустите двоичный файл, чтобы установить его.

Инициализация Vagrant

Vagrant - это инструмент, основанный на командной строке. После завершения установки откройте окно консоли и создайте новый каталог под названием «vagrant_intro».

С этого момента это будет ваш рабочий каталог. Внутри каталога vagrant_intro введите:

vagrant init ubuntu/trusty64

Вы должны увидеть следующий текст:

Сгенерированный «Vagrantfile» - это файл Ruby, который управляет вашей [одной или несколькими] виртуальными машинами. Это довольно большой файл с большим количеством комментариев. Позднее я перейду к наиболее важным из них, но давайте сначала попробуем. Введите: vagrant up.

Это заставит Vagrant загрузить готовый виртуальный блок с 64-разрядной версией Ubuntu 14.04 (надежный). Это займет некоторое время (несколько минут) и выведет много текста на ваш экран. Пока Vagrant производит установку, давайте поговорим о том, что такое виртуальная машина.

Одна точка зрения (которой я обычно придерживаюсь) состоит в том, что виртуальная машина имитирует удаленный сервер. Вы должны общаться с ним только через сетевой интерфейс. Это особенно полезно для тестирования распределенных систем, где вы не должны использовать какие-либо специальные интерфейсы VM-host, потому что они не будут доступны в ваших производственных системах. При работе в этом режиме вы обычно свяжетесь с вашей виртуальной машиной через SSH (возможно, с помощью инструмента Ansible).

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

Например, очень распространенная настройка заключается в том, чтобы разработчики записывали свой код на Mac с помощью Mac OS X, но развертывали в производственной среде Linux. Если вы хотите убедиться, что код, который вы разрабатываете на Mac, работает правильно на Linux без необходимости развертывания на удаленном сервере, вы можете использовать синхронизированные папки, в которых вы читаете и записываете файлы на ОС хоста (как правило, Mac OS X) и получаете их доступными сразу же на гостевой ОС (обычно Linux).

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

Разумеется, вы можете использовать как синхронизированные папки, так и SSH в своей виртуальной машине. Существуют и другие параметры, которые размывают границы, такие как сопоставление портов.

Vagrantfile

Вот урезанная версия Vagrantfile с некоторыми из наиболее важных опций:

Синтаксис Ruby, дает вам большую гибкость, если вы хотите добавить условные обозначения и циклы. Это особенно полезно, если вы используете свой Vagrantfile для управления кластером виртуальных машин.

Подключение к вашей виртуальной машине

Вы можете подключиться к своей виртуальной машине, набрав: vagrant ssh.

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

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

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

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

Отображение гостевых портов

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

Например, в вышеприведенной конфигурации гостевой порт 80 отображается на порт хоста 8080. Это означает, что любая служба, запущенная на порту 80 в гостевой системе, может быть доступна как localhost:8080 на главной машине.

Давайте посмотрим на демонстрацию. Во-первых, я поставлю простой файл index.html в каталоге ~/vagrant_intro на хосте, который синхронизируется с каталогом /vagrant_data на гостевой машине.

Затем, после SSH в гостевой машине, я запустил небольшой веб-сервер в каталоге /vagrant_data:

Этот однострочный HTTP-сервер Python просто обслуживает любой статический файл в своем рабочем каталоге. Теперь, поскольку порт 80 сопоставляется с портом 8080 хоста, вы можете перейти на localhost:8080 и просмотреть результат работы сервера.

Подключение к виртуальной машине через сеть

Вы также можете подключиться к виртуальной машине через свой IP-адрес, как если бы это был действительно отдельный сервер. Я всегда добавляю имя хоста в /etc/hosts, поэтому мне не нужно использовать голый IP-адрес, и потому что тестируемый код обычно настраивается с именем хоста производственной системы. Это то, что вам нужно добавить в файл /etc/hosts:

Теперь любой доступ к сети «production.server.com» на вашем компьютере будет отправлен на вашу виртуальную машину.

В этом случае программы, которые обычно подключаются к удаленному серверу, настраиваются с помощью IP-адреса или имени хоста. До Vagrant 1.7 существовал единственный закрытый ключ, который можно было использовать для всех машин. Это была серьезная проблема безопасности, когда люди открывали свою виртуальную машину в общественных сетях, и любой мог войти по SSH и получить доступ root. Начиная с версии 1.7, Vagrant генерирует новую пару ключей для каждой машины. Чтобы узнать, где находится секретный ключ для вашей машины, выполните следующую команду: vagrant ssh-config.

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

Управление виртуальными боксами

Vagrant предоставляет множество команд для управления боксами. Давайте поэкспериментируем с ними. Чтобы просмотреть список команд, введите: vagrant.

Ранее я рассмотрел некоторые из наиболее распространенных команд. Команды box позволяют управлять своими боксами напрямую. Например, чтобы увидеть все виртуальные машины на вашем компьютере, введите vagrant box list. Вы можете обновлять боксы до последней версии с помощью команды update. Команда reload будет очень полезна, если вы измените свой Vagrantfile. Наконец, provision позволяет вам устанавливать, настраивать и устанавливать программное обеспечение на вашей виртуальной машине с помощью различных помощников, включая Chef, Puppet, Salt, моего любимого Ansible и даже Docker.

Вывод

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

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.