From a40bb9af99721414b420b2c19ea5e1c5a34a13f6 Mon Sep 17 00:00:00 2001 From: Kent Wang Date: Sun, 11 Jun 2017 15:58:45 +0800 Subject: [PATCH 1/3] Fix ssh config must specify HostKeyCallback Fixes: #5001 --- builder/alicloud/ecs/ssh_helper.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/builder/alicloud/ecs/ssh_helper.go b/builder/alicloud/ecs/ssh_helper.go index d3d6b8b1c..e08b3afff 100644 --- a/builder/alicloud/ecs/ssh_helper.go +++ b/builder/alicloud/ecs/ssh_helper.go @@ -49,6 +49,7 @@ func SSHConfig(useAgent bool, username, password string) func(multistep.StateBag Auth: []ssh.AuthMethod{ ssh.PublicKeysCallback(agent.NewClient(sshAgent).Signers), }, + HostKeyCallback: ssh.InsecureIgnoreHostKey(), }, nil } @@ -64,6 +65,7 @@ func SSHConfig(useAgent bool, username, password string) func(multistep.StateBag Auth: []ssh.AuthMethod{ ssh.PublicKeys(signer), }, + HostKeyCallback: ssh.InsecureIgnoreHostKey(), }, nil } else { @@ -73,7 +75,9 @@ func SSHConfig(useAgent bool, username, password string) func(multistep.StateBag ssh.Password(password), ssh.KeyboardInteractive( packerssh.PasswordKeyboardInteractive(password)), - }}, nil + }, + HostKeyCallback: ssh.InsecureIgnoreHostKey(), + }, nil } } } From 6da9802a33d98b71f17e93bfbf1b3fa070687757 Mon Sep 17 00:00:00 2001 From: Kent Wang Date: Sun, 11 Jun 2017 16:01:09 +0800 Subject: [PATCH 2/3] builder/alicloud-ecs: Fix chooseNetworkType * Choose VpcNet when KeyPairName is set * Code cleanup --- builder/alicloud/ecs/builder.go | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/builder/alicloud/ecs/builder.go b/builder/alicloud/ecs/builder.go index de56c0cab..af40c92fc 100644 --- a/builder/alicloud/ecs/builder.go +++ b/builder/alicloud/ecs/builder.go @@ -211,13 +211,31 @@ func (b *Builder) Cancel() { } func (b *Builder) chooseNetworkType() InstanceNetWork { - //Alicloud userdata require vpc network and public key require userdata, so besides user specific vpc network, - //choose vpc networks in those cases - if b.config.RunConfig.Comm.SSHPrivateKey != "" || b.config.UserData != "" || b.config.UserDataFile != "" || - b.config.VpcId != "" || b.config.VSwitchId != "" || b.config.TemporaryKeyPairName != "" { + if b.isVpcNetRequired() { return VpcNet } else { return ClassicNet } - +} + +func (b *Builder) isVpcNetRequired() bool { + // UserData and KeyPair only works in VPC + return b.isVpcSpecified() || b.isUserDataNeeded() || b.isKeyPairNeeded() +} + +func (b *Builder) isVpcSpecified() bool { + return b.config.VpcId != "" || b.config.VSwitchId != "" +} + +func (b *Builder) isUserDataNeeded() bool { + // Public key setup requires userdata + if b.config.RunConfig.Comm.SSHPrivateKey != "" { + return true + } + + return b.config.UserData != "" || b.config.UserDataFile != "" +} + +func (b *Builder) isKeyPairNeeded() bool { + return b.config.SSHKeyPairName != "" || b.config.TemporaryKeyPairName != "" } From e59678a0330885a574dc3114f06bccdca8801fb1 Mon Sep 17 00:00:00 2001 From: Kent Wang Date: Sun, 11 Jun 2017 16:03:28 +0800 Subject: [PATCH 3/3] Fix alicloud-ecs typo * Fix typo: internet_max_bandwith_out -> internet_max_bandwidth_out --- builder/alicloud/ecs/run_config.go | 4 ++-- website/source/docs/builders/alicloud-ecs.html.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/builder/alicloud/ecs/run_config.go b/builder/alicloud/ecs/run_config.go index 59b8695e9..b6098ce5c 100644 --- a/builder/alicloud/ecs/run_config.go +++ b/builder/alicloud/ecs/run_config.go @@ -4,11 +4,11 @@ import ( "errors" "fmt" "os" + "strings" "github.com/hashicorp/packer/common/uuid" "github.com/hashicorp/packer/helper/communicator" "github.com/hashicorp/packer/template/interpolate" - "strings" ) type RunConfig struct { @@ -30,7 +30,7 @@ type RunConfig struct { VSwitchName string `mapstructure:"vswitch_id"` InstanceName string `mapstructure:"instance_name"` InternetChargeType string `mapstructure:"internet_charge_type"` - InternetMaxBandwidthOut int `mapstructure:"internet_max_bandwith_out"` + InternetMaxBandwidthOut int `mapstructure:"internet_max_bandwidth_out"` TemporaryKeyPairName string `mapstructure:"temporary_key_pair_name"` // Communicator settings diff --git a/website/source/docs/builders/alicloud-ecs.html.md b/website/source/docs/builders/alicloud-ecs.html.md index ac1450ccc..f4d22c100 100644 --- a/website/source/docs/builders/alicloud-ecs.html.md +++ b/website/source/docs/builders/alicloud-ecs.html.md @@ -173,7 +173,7 @@ builder. If this parameter is not specified, the default value is `PayByBandwidth`. -- `internet_max_bandwith_out` (string) - Maximum outgoing bandwidth to the public +- `internet_max_bandwidth_out` (string) - Maximum outgoing bandwidth to the public network, measured in Mbps (Mega bit per second). Value range: