Commit 43085e47 authored by Mitchell Hashimoto's avatar Mitchell Hashimoto

builder/vmware: Ability to specify the SSH port with "ssh_port"

parent 9367df4a
......@@ -40,6 +40,7 @@ type config struct {
ShutdownTimeout time.Duration ``
SSHUser string `mapstructure:"ssh_username"`
SSHPassword string `mapstructure:"ssh_password"`
SSHPort uint `mapstructure:"ssh_port"`
SSHWaitTimeout time.Duration ``
VMXData map[string]string `mapstructure:"vmx_data"`
VNCPortMin uint `mapstructure:"vnc_port_min"`
......@@ -92,6 +93,10 @@ func (b *Builder) Prepare(raws ...interface{}) error {
b.config.OutputDir = "vmware"
}
if b.config.SSHPort == 0 {
b.config.SSHPort = 22
}
// Accumulate any errors
var err error
errs := make([]error, 0)
......
......@@ -200,6 +200,34 @@ func TestBuilderPrepare_SSHUser(t *testing.T) {
}
}
func TestBuilderPrepare_SSHPort(t *testing.T) {
var b Builder
config := testConfig()
// Test with a bad value
delete(config, "ssh_port")
err := b.Prepare(config)
if err != nil {
t.Fatalf("bad err: %s", err)
}
if b.config.SSHPort != 22 {
t.Fatalf("bad ssh port: %d", b.config.SSHPort)
}
// Test with a good one
config["ssh_port"] = 44
b = Builder{}
err = b.Prepare(config)
if err != nil {
t.Fatalf("should not have error: %s", err)
}
if b.config.SSHPort != 44 {
t.Fatalf("bad ssh port: %d", b.config.SSHPort)
}
}
func TestBuilderPrepare_SSHWaitTimeout(t *testing.T) {
var b Builder
config := testConfig()
......
......@@ -144,7 +144,7 @@ func (s *stepWaitForSSH) waitForSSH(state map[string]interface{}) (packer.Commun
log.Printf("Detected IP: %s", ip)
// Attempt to connect to SSH port
nc, err = net.Dial("tcp", fmt.Sprintf("%s:22", ip))
nc, err = net.Dial("tcp", fmt.Sprintf("%s:%d", ip, config.SSHPort))
if err != nil {
log.Printf("TCP connection to SSH ip/port failed: %s", err)
continue
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment