Статьи

Capistrano: развертывание на бродячей виртуальной машине

Я работал над учебником, посвященным размышлениям о проблемах в графах, используя свой футбольный граф, и я хотел развернуть его на локальной бродячей виртуальной машине в качестве основы для его развертывания в реальной среде. Мой Vagrant-файл для виртуальной машины выглядит так:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
# -*- mode: ruby -*-
# vi: set ft=ruby :
 
Vagrant::Config.run do |config|
  config.vm.box = "precise64"
 
  config.vm.define :neo01 do |neo|
    neo.vm.network :hostonly, "192.168.33.101"
    neo.vm.host_name = 'neo01.local'
    neo.vm.forward_port 7474, 57474
    neo.vm.forward_port 80, 50080
  end
 
 
  config.vm.provision :puppet do |puppet|
    puppet.manifests_path = "puppet/manifests"
    puppet.manifest_file  = "site.pp"
    puppet.module_path = "puppet/modules"
  end
end

Я переадресовываю порты 80 и 7474 на 50080 и 57474 соответственно, чтобы получить доступ к веб-приложению и консоли neo4j из моего браузера. Существует множество кукольных кодов для настройки машины в указанном месте. Поскольку веб-приложение написано на Ruby / Sinatra, наиболее простым инструментом развертывания, вероятно, является capistrano, и я нашел учебник на веб-сайте beanstalk действительно полезным для настройки. Мой файл config / deploy.rb, который я настроил для чтения в Capistrano, выглядит следующим образом:

01
02
03
04
05
06
07
08
09
10
11
require 'capistrano/ext/multistage'
 
set :application, "thinkingingraphs"
set :scm, :git
set :repository,  "[email protected]:markhneedham/thinkingingraphs.git"
set :scm_passphrase, ""
 
set :ssh_options, {:forward_agent => true}
set :default_run_options, {:pty => true}
set :stages, ["vagrant"]
set :default_stage, "vagrant"

В моем файле config / deploy / vagrant.rb у меня есть следующее:

1
2
3
set :user, "vagrant"
server "192.168.33.101", :app, :web, :db, :primary => true
set :deploy_to, "/var/www/thinkingingraphs"

Так что IP там тот же, который я назначил в Vagrantfile. Если вы этого не сделали, вам нужно будет использовать vagrant ssh, чтобы перейти на виртуальную машину, а затем ifconfig, чтобы получить IP-адрес. Я подумал, что, вероятно, нужно было сделать еще один шаг, чтобы сообщить Capistrano, откуда ему взять бродячий открытый ключ, но я подумал, что в любом случае я попытаюсь развернуть его, чтобы посмотреть, что произойдет.

1
$ bundle exec cap deploy

Он попросил меня ввести пароль пользователя vagrant, который по умолчанию является «vagrant», и я в конечном итоге нашел сообщение в StackOverflow, в котором предлагалось изменить ssh_options на следующее:

1
set :ssh_options, {:forward_agent => true, keys: ['~/.vagrant.d/insecure_private_key']}

И с этим развертывание работало без нареканий! Счастливые дни.

Ссылка: Capistrano: Развертывание на Vagrant VM от нашего партнера JCG Марка Нидхэма в блоге Марка Нидхэма .