Vagrant — это удобный инструмент для создания виртуальных машин. Это похоже на запуск экземпляра EC2 , но в случае Vagrant все локализовано. И самое главное, это бесплатно.
Я предпочитаю отдавать предпочтение Ubuntu как своему любимому вкусу linux; следовательно, все производственные экземпляры EC2 используют настроенный Ubuntu AMI. Однако тестирование различных аспектов этой системы с использованием различных программных библиотек первоначально проводится локально с использованием виртуальных машин Vagrant. Более того, вы можете установить локализованные виртуальные машины других операционных систем , от Debian до OpenSuse и Heroku Cedalon .
Запустить локальный экземпляр Heroku ‘s Cedalon (который является версией Ubuntu 10.04 с установленными Ruby и Node.js) так же просто, как набрать:
Разжигая кедал Heroku на месте
1
2
|
vagrant init heroku http: //dl.dropbox.com/u/1906634/heroku.box vagrant up |
Затем вы можете использовать SSH для этой работающей виртуальной машины следующим образом:
SSHing к локальной ВМ
1
|
vagrant ssh |
Команда vagrant ssh
может быть проблематичной, особенно, если вы автоматизируете какой-то аспект SSH — например, вы используете какую-то библиотеку поверх SSH. В этом случае вам нужно использовать SSH напрямую, а не через Vagrant.
К счастью, вы можете легко подключиться по SSH к локальным экземплярам Vagrant. Вам нужно будет указать SSH, какой ключ использовать (Vagrant создает его для вас), к какому пользователю подключаться (как правило, vagrant) и к какому порту подключаться (обычно 2222). Всю эту информацию можно найти с помощью команды vagrant ssh-config
.
Чтобы использовать простой Jane SSH при работе с экземплярами Vagrant, вам сначала нужно выполнить эту команду:
Распечатка местоположения ключа Вагранта
1
|
vagrant ssh-config | grep IdentityFile | awk '{print $2}' |
Эта 3-х конечная команда в конечном итоге сообщает вам, где Vagrant создал файл ключа. Команда awk '{print $2}'
печатает второй столбец строки в строке ssh-config
которая начинается с IdentityFile
(который указывает на его местоположение).
Теперь, когда вы знаете, где находится файл ключа, вы можете использовать ssh (при условии, что порт по умолчанию не изменился с 2222 — дважды проверьте ваш ssh-config
чтобы убедиться в этом) следующим образом:
Используя обычный SSH
1
|
ssh -i /some/dir/.vagrant.d/insecure_private_key -l vagrant -p 2222 127.0 . 0.1 |
Если вам случится запустить разные виртуальные машины — например, у меня есть и Heroku Cedalon, и обычные экземпляры Ubuntu, SSH, вероятно, пожалуется, что идентификация удаленного хоста изменилась. Это действительное предупреждение, поскольку отпечаток RSA, связанный с локальным хостом, действительно изменился.
Вы можете предложить, чтобы SSH игнорировал это предупреждение , добавив два дополнительных флага. Я настоятельно рекомендую вам делать это только через командную строку, а не с каким-либо конфигурационным файлом SSH, так как предупреждающие выбросы SSH полностью допустимы и могут спасти вас от атаки «человек посередине».
Тем не менее, если вы работаете с локализованными виртуальными машинами и хотите обойти это предупреждение, используйте следующие два флага:
Два дополнительных флага для SSH
1
|
-o UserKnownHostsFile=/dev/ null -o StrictHostKeyChecking=no |
Следовательно, когда я отправляю SSH в локальный экземпляр Vagrant, я набираю что-то вроде:
SSHing для Vagrant экземпляров
1
|
ssh -i /some/dir/.vagrant.d/insecure_private_key -l vagrant -p 2222 -o UserKnownHostsFile=/dev/ null -o StrictHostKeyChecking=no 127.0 . 0.1 |
Наконец, чтобы закрыть экземпляр Vagrant, просто введите команду:
SSHing для Vagrant экземпляров
1
|
vagrant destroy |
Vagrant упрощает запуск локализованных сред разработки — экземпляры Vagrant загружаются быстрее, чем экземпляры EC2, и они бесплатны. И теперь вы знаете, как использовать обычный SSH для подключения к ним. Вы можете копать это?