diff --git a/builder/amazon/common/run_config.go b/builder/amazon/common/run_config.go index a4345b1db..3851141e2 100644 --- a/builder/amazon/common/run_config.go +++ b/builder/amazon/common/run_config.go @@ -57,8 +57,7 @@ type RunConfig struct { WindowsPasswordTimeout time.Duration `mapstructure:"windows_password_timeout"` // Communicator settings - Comm communicator.Config `mapstructure:",squash"` - SSHInterface string `mapstructure:"ssh_interface"` + Comm communicator.Config `mapstructure:",squash"` } func (c *RunConfig) Prepare(ctx *interpolate.Context) []error { @@ -84,12 +83,12 @@ func (c *RunConfig) Prepare(ctx *interpolate.Context) []error { errs := c.Comm.Prepare(ctx) // Validating ssh_interface - if c.SSHInterface != "public_ip" && - c.SSHInterface != "private_ip" && - c.SSHInterface != "public_dns" && - c.SSHInterface != "private_dns" && - c.SSHInterface != "" { - errs = append(errs, fmt.Errorf("Unknown interface type: %s", c.SSHInterface)) + if c.Comm.SSHInterface != "public_ip" && + c.Comm.SSHInterface != "private_ip" && + c.Comm.SSHInterface != "public_dns" && + c.Comm.SSHInterface != "private_dns" && + c.Comm.SSHInterface != "" { + errs = append(errs, fmt.Errorf("Unknown interface type: %s", c.Comm.SSHInterface)) } if c.Comm.SSHKeyPairName != "" { diff --git a/builder/amazon/ebs/builder.go b/builder/amazon/ebs/builder.go index 75fe70cbf..85f576415 100644 --- a/builder/amazon/ebs/builder.go +++ b/builder/amazon/ebs/builder.go @@ -203,7 +203,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe Config: &b.config.RunConfig.Comm, Host: awscommon.SSHHost( ec2conn, - b.config.SSHInterface), + b.config.Comm.SSHInterface), SSHConfig: b.config.RunConfig.Comm.SSHConfigFunc(), }, &common.StepProvision{}, diff --git a/builder/amazon/ebssurrogate/builder.go b/builder/amazon/ebssurrogate/builder.go index 6ed2fda51..b6d91fdfa 100644 --- a/builder/amazon/ebssurrogate/builder.go +++ b/builder/amazon/ebssurrogate/builder.go @@ -220,7 +220,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe Config: &b.config.RunConfig.Comm, Host: awscommon.SSHHost( ec2conn, - b.config.SSHInterface), + b.config.Comm.SSHInterface), SSHConfig: b.config.RunConfig.Comm.SSHConfigFunc(), }, &common.StepProvision{}, diff --git a/builder/amazon/ebsvolume/builder.go b/builder/amazon/ebsvolume/builder.go index c9b99e37f..fb0a26def 100644 --- a/builder/amazon/ebsvolume/builder.go +++ b/builder/amazon/ebsvolume/builder.go @@ -196,7 +196,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe Config: &b.config.RunConfig.Comm, Host: awscommon.SSHHost( ec2conn, - b.config.SSHInterface), + b.config.Comm.SSHInterface), SSHConfig: b.config.RunConfig.Comm.SSHConfigFunc(), }, &common.StepProvision{}, diff --git a/builder/amazon/instance/builder.go b/builder/amazon/instance/builder.go index 43c353c79..c7c8a578f 100644 --- a/builder/amazon/instance/builder.go +++ b/builder/amazon/instance/builder.go @@ -278,7 +278,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe Config: &b.config.RunConfig.Comm, Host: awscommon.SSHHost( ec2conn, - b.config.SSHInterface), + b.config.Comm.SSHInterface), SSHConfig: b.config.RunConfig.Comm.SSHConfigFunc(), }, &common.StepProvision{}, diff --git a/builder/openstack/builder.go b/builder/openstack/builder.go index 172dbab2b..055cd3713 100644 --- a/builder/openstack/builder.go +++ b/builder/openstack/builder.go @@ -127,8 +127,8 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe Config: &b.config.RunConfig.Comm, Host: CommHost( computeClient, - b.config.SSHInterface, - b.config.SSHIPVersion), + b.config.Comm.SSHInterface, + b.config.Comm.SSHIPVersion), SSHConfig: b.config.RunConfig.Comm.SSHConfigFunc(), }, &common.StepProvision{}, diff --git a/builder/openstack/run_config.go b/builder/openstack/run_config.go index 060e5c866..56fccb4f3 100644 --- a/builder/openstack/run_config.go +++ b/builder/openstack/run_config.go @@ -13,9 +13,7 @@ import ( // RunConfig contains configuration for running an instance from a source // image and details on how to access that launched image. type RunConfig struct { - Comm communicator.Config `mapstructure:",squash"` - SSHInterface string `mapstructure:"ssh_interface"` - SSHIPVersion string `mapstructure:"ssh_ip_version"` + Comm communicator.Config `mapstructure:",squash"` SourceImage string `mapstructure:"source_image"` SourceImageName string `mapstructure:"source_image_name"` @@ -131,7 +129,7 @@ func (c *RunConfig) Prepare(ctx *interpolate.Context) []error { errs = append(errs, errors.New("A flavor must be specified")) } - if c.SSHIPVersion != "" && c.SSHIPVersion != "4" && c.SSHIPVersion != "6" { + if c.Comm.SSHIPVersion != "" && c.Comm.SSHIPVersion != "4" && c.Comm.SSHIPVersion != "6" { errs = append(errs, errors.New("SSH IP version must be either 4 or 6")) } diff --git a/helper/communicator/config.go b/helper/communicator/config.go index 9846aff10..44bc5a999 100644 --- a/helper/communicator/config.go +++ b/helper/communicator/config.go @@ -32,6 +32,8 @@ type Config struct { SSHKeyPairName string `mapstructure:"ssh_keypair_name"` SSHTemporaryKeyPairName string `mapstructure:"temporary_key_pair_name"` SSHPrivateKeyFile string `mapstructure:"ssh_private_key_file"` + SSHInterface string `mapstructure:"ssh_interface"` + SSHIPVersion string `mapstructure:"ssh_ip_version"` SSHPty bool `mapstructure:"ssh_pty"` SSHTimeout time.Duration `mapstructure:"ssh_timeout"` SSHAgentAuth bool `mapstructure:"ssh_agent_auth"`