Mikhail Voronin

Бесполезный Vagrant

     

 System Administration

Что умеет Vagrant?

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

Это, конечно, хорошо, но...
Во-первых, образов там не очень много, и у меня есть сомнения, что я смогу найти нужный мне образ. Образ с Ubuntu 14.04, postgres, nginx, uwsgi и python3 я не нашел, было что-то похожее с Ubuntu 12.04.
Во-вторых, мне и не нужен образ на котором просто установлены нужные пакеты, но ничего не настроено. Установка нужных пакетов занимает несколько минут. Какой смысл в таком образе? Мне нужен образ, в котором все серверы, демоны и окружение уже настроены так, как я это делаю. И кроме меня никто не может создать такой образ.
Во-третьих, я не могу быть уверен, что в этих образах нет вирусов или червей. Эти образы может загрузить любой, кто их там проверяет? Никто. Стоит ли рисковать? Нет. Хотя есть официальные образы с Ubuntu. Но опять же, почему они считаются официальными, кто их создал? Я не смог найти этой информации. Кроме того, мне не нужен образ с чистой Ubuntu.
В-четвертых, список поддерживаемых виртуальных машин не полный. Например, KVM в нем нет. Хотя можно скачать дополнение с GitHub под названием vagrant-libvirt.

Vagrant позволяет управлять виртуальной машиной из командной строки

У Vagrant есть команды, которые позволяют управлять виртуальными машинами.
vagrant up - запускает виртуальную машину
vagrant suspend - сохраняет состояние виртуальной машины и останавливает её
vagrant halt - завершает работу гостевой ОС и останавливает виртуальную машину
vagrant destroy - уничтожает виртуальную машину
vagrant ssh - подключается к ней по ssh
Это всё выглядит интересно, но у KVM, VMWare и VirtualBox есть командный интерфейс, а ещё есть графический интерфейс. Так что я могу выбирать, что мне удобнее.
Всё ещё не понимаю, зачем мне Vagrant.

Vagrant умеет синхронизировать директории

Очень редко пользуюсь синхронизацией директорий, но если бы было надо, то воспользовался бы аналогичной функцией в VirtualBox или NFS. Обычно пользуюсь scp и mc/fish.

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

Вот это да! То же самое я могу сделать с помощью SSH!
  1. $ ssh user@remote-srv 'bash -s' < local_script.sh
Если нужно выполнять команды, используя sudo, это уже будет не так красиво, но также работоспособно.
  1. $ ssh user@remote-srv 'echo "rootpass" | sudo -Sv && bash -s' < local_script.sh
Можно даже аргументы передать скрипту, если нужно
  1. $ ssh user@remote-srv ARG1="arg1" ARG2="arg2" 'bash -s' < local_script.sh

Vagrant умеет перенаправлять порты

Хорошо, тоже самое умеют виртуальные машины. Зачем мне Vagrant?

Vagrant умеет туннелировать 80 порт виртуальной машины на временный домен 3го уровня

Это значит, что можно зарегистрироваться на HashiCorp's Atlas, затем аутентифицироваться в консоли и выполнить команду vagrant share.

  1. $ vagrant login
  2. Username or Email: mitchellh
  3. Password (will be hidden):
  4. You're now logged in!
  5. $ vagrant share
  6. ...
  7. ==> default: Your Vagrant Share is running!
  8. ==> default: URL: http://frosty-weasel-0857.vagrantshare.com
  9. ...
В ответе будет передан адрес по которому можно обратиться к HTTP-серверу на виртуальной машине.
И эта команда, как мне кажется, одна из самых полезных. Стоит ли ради этого пользоваться Vagrant? Ну, не знаю. Есть другие сервисы, которые делают то же самое. Например, Localtunnel.