From 8a8b51be97df546411b2e79e48cfe3766f3f9c59 Mon Sep 17 00:00:00 2001 From: "Zanetti, David" Date: Tue, 26 Sep 2017 00:57:56 +0000 Subject: [PATCH] Allow temporary security group to have source CIDR block explicitly provided --- builder/amazon/common/run_config.go | 5 +++++ builder/amazon/common/step_security_group.go | 13 +++++++------ builder/amazon/ebs/builder.go | 1 + builder/amazon/ebssurrogate/builder.go | 1 + builder/amazon/ebsvolume/builder.go | 1 + builder/amazon/instance/builder.go | 1 + 6 files changed, 16 insertions(+), 6 deletions(-) diff --git a/builder/amazon/common/run_config.go b/builder/amazon/common/run_config.go index 0190df9f3..d19e1f68b 100644 --- a/builder/amazon/common/run_config.go +++ b/builder/amazon/common/run_config.go @@ -40,6 +40,7 @@ type RunConfig struct { DisableStopInstance bool `mapstructure:"disable_stop_instance"` SecurityGroupId string `mapstructure:"security_group_id"` SecurityGroupIds []string `mapstructure:"security_group_ids"` + SecurityGroupSourceCidr string `mapstructure:"security_group_source_cidr"` SubnetId string `mapstructure:"subnet_id"` TemporaryKeyPairName string `mapstructure:"temporary_key_pair_name"` UserData string `mapstructure:"user_data"` @@ -115,6 +116,10 @@ func (c *RunConfig) Prepare(ctx *interpolate.Context) []error { } } + if c.SecurityGroupSourceCidr == "" { + c.SecurityGroupSourceCidr = "0.0.0.0/0" + } + if c.InstanceInitiatedShutdownBehavior == "" { c.InstanceInitiatedShutdownBehavior = "stop" } else if !reShutdownBehavior.MatchString(c.InstanceInitiatedShutdownBehavior) { diff --git a/builder/amazon/common/step_security_group.go b/builder/amazon/common/step_security_group.go index e7bc294b2..9ca4ccd78 100644 --- a/builder/amazon/common/step_security_group.go +++ b/builder/amazon/common/step_security_group.go @@ -15,9 +15,10 @@ import ( ) type StepSecurityGroup struct { - CommConfig *communicator.Config - SecurityGroupIds []string - VpcId string + CommConfig *communicator.Config + SecurityGroupIds []string + VpcId string + SecurityGroupSourceCidr string createdGroupId string } @@ -78,15 +79,15 @@ func (s *StepSecurityGroup) Run(state multistep.StateBag) multistep.StepAction { IpProtocol: aws.String("tcp"), FromPort: aws.Int64(int64(port)), ToPort: aws.Int64(int64(port)), - CidrIp: aws.String("0.0.0.0/0"), + CidrIp: aws.String(s.SecurityGroupSourceCidr), } // We loop and retry this a few times because sometimes the security // group isn't available immediately because AWS resources are eventually // consistent. ui.Say(fmt.Sprintf( - "Authorizing access to port %d on the temporary security group...", - port)) + "Authorizing access to port %d from %s in the temporary security group...", + port, s.SecurityGroupSourceCidr)) for i := 0; i < 5; i++ { _, err = ec2conn.AuthorizeSecurityGroupIngress(req) if err == nil { diff --git a/builder/amazon/ebs/builder.go b/builder/amazon/ebs/builder.go index c31da73a3..e31c4a0fb 100644 --- a/builder/amazon/ebs/builder.go +++ b/builder/amazon/ebs/builder.go @@ -132,6 +132,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe SecurityGroupIds: b.config.SecurityGroupIds, CommConfig: &b.config.RunConfig.Comm, VpcId: b.config.VpcId, + SecurityGroupSourceCidr: b.config.SecurityGroupSourceCidr, }, &stepCleanupVolumes{ BlockDevices: b.config.BlockDevices, diff --git a/builder/amazon/ebssurrogate/builder.go b/builder/amazon/ebssurrogate/builder.go index 20984fee5..b6413f981 100644 --- a/builder/amazon/ebssurrogate/builder.go +++ b/builder/amazon/ebssurrogate/builder.go @@ -146,6 +146,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe SecurityGroupIds: b.config.SecurityGroupIds, CommConfig: &b.config.RunConfig.Comm, VpcId: b.config.VpcId, + SecurityGroupSourceCidr: b.config.SecurityGroupSourceCidr, }, &awscommon.StepRunSourceInstance{ Debug: b.config.PackerDebug, diff --git a/builder/amazon/ebsvolume/builder.go b/builder/amazon/ebsvolume/builder.go index 1aad1819a..1850af42e 100644 --- a/builder/amazon/ebsvolume/builder.go +++ b/builder/amazon/ebsvolume/builder.go @@ -121,6 +121,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe SecurityGroupIds: b.config.SecurityGroupIds, CommConfig: &b.config.RunConfig.Comm, VpcId: b.config.VpcId, + SecurityGroupSourceCidr: b.config.SecurityGroupSourceCidr, }, &awscommon.StepRunSourceInstance{ Debug: b.config.PackerDebug, diff --git a/builder/amazon/instance/builder.go b/builder/amazon/instance/builder.go index 6329008fe..2b85cba68 100644 --- a/builder/amazon/instance/builder.go +++ b/builder/amazon/instance/builder.go @@ -217,6 +217,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe CommConfig: &b.config.RunConfig.Comm, SecurityGroupIds: b.config.SecurityGroupIds, VpcId: b.config.VpcId, + SecurityGroupSourceCidr: b.config.SecurityGroupSourceCidr, }, &awscommon.StepRunSourceInstance{ Debug: b.config.PackerDebug,