`vagrant ssh-config` outputs .ssh/config ready entry for current environment
This commit is contained in:
parent
d5e2a64fd3
commit
c630b028fc
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
begin
|
||||||
|
require File.expand_path('../../.bundle/environment', __FILE__)
|
||||||
|
rescue LoadError
|
||||||
|
# Fallback on rubygems
|
||||||
|
require "rubygems"
|
||||||
|
end
|
||||||
|
|
||||||
|
require 'git-style-binary/command'
|
||||||
|
|
||||||
|
# Get library
|
||||||
|
libdir = File.join(File.dirname(__FILE__), '..', 'lib')
|
||||||
|
require File.expand_path('vagrant', libdir)
|
||||||
|
|
||||||
|
GitStyleBinary.command do
|
||||||
|
short_desc "outputs .ssh/config valid syntax for connecting to this environment via ssh"
|
||||||
|
banner <<-EOS
|
||||||
|
Usage: #{command.full_name} #{all_options_string}
|
||||||
|
|
||||||
|
Outputs a .ssh/config valid entry for connecting (via SCP, git, etc.)
|
||||||
|
to the current environment.
|
||||||
|
|
||||||
|
EOS
|
||||||
|
|
||||||
|
run do |command|
|
||||||
|
Vagrant::Commands.execute(:ssh_config)
|
||||||
|
end
|
||||||
|
end
|
|
@ -61,6 +61,18 @@ module Vagrant
|
||||||
env.ssh.connect
|
env.ssh.connect
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Outputs a valid entry for .ssh/config which can be used to connect
|
||||||
|
# to this environment.
|
||||||
|
def ssh_config
|
||||||
|
env.require_persisted_vm
|
||||||
|
puts TemplateRenderer.render("ssh_config", {
|
||||||
|
:host_key => "vagrant",
|
||||||
|
:ssh_user => env.config.ssh.username,
|
||||||
|
:ssh_port => env.ssh.port,
|
||||||
|
:private_key_path => env.config.ssh.private_key_path
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
# Halts a running vagrant instance. This forcibly halts the instance;
|
# Halts a running vagrant instance. This forcibly halts the instance;
|
||||||
# it is the equivalent of pulling the power on a machine. The instance
|
# it is the equivalent of pulling the power on a machine. The instance
|
||||||
# can be restarted again with {up}.
|
# can be restarted again with {up}.
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
Host <%= host_key %>
|
||||||
|
HostName localhost
|
||||||
|
User <%= ssh_user %>
|
||||||
|
Port <%= ssh_port %>
|
||||||
|
UserKnownHostsFile /dev/null
|
||||||
|
StrictHostKeyChecking no
|
||||||
|
IdentityFile <%= private_key_path %>
|
|
@ -108,6 +108,27 @@ class CommandsTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "ssh-config" do
|
||||||
|
setup do
|
||||||
|
@ssh = mock("ssh")
|
||||||
|
@ssh.stubs(:port).returns(2197)
|
||||||
|
@env.stubs(:ssh).returns(@ssh)
|
||||||
|
end
|
||||||
|
|
||||||
|
should "output rendered template" do
|
||||||
|
result = mock("result")
|
||||||
|
Vagrant::Util::TemplateRenderer.expects(:render).with("ssh_config", {
|
||||||
|
:host_key => "vagrant",
|
||||||
|
:ssh_user => @env.config.ssh.username,
|
||||||
|
:ssh_port => @env.ssh.port,
|
||||||
|
:private_key_path => @env.config.ssh.private_key_path
|
||||||
|
}).returns(result)
|
||||||
|
|
||||||
|
@commands.expects(:puts).with(result).once
|
||||||
|
@commands.ssh_config
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "suspend" do
|
context "suspend" do
|
||||||
setup do
|
setup do
|
||||||
@persisted_vm.stubs(:suspend)
|
@persisted_vm.stubs(:suspend)
|
||||||
|
|
Loading…
Reference in New Issue