Commit a93a1797 authored by Mitchell Hashimoto's avatar Mitchell Hashimoto

Merge pull request #389 from whostolebenfrog/master

builder/amazon/ebs: Allow customization of temporary ssh key name
parents e732d861 f9538744
......@@ -22,6 +22,7 @@ type RunConfig struct {
SecurityGroupId string `mapstructure:"security_group_id"`
SubnetId string `mapstructure:"subnet_id"`
VpcId string `mapstructure:"vpc_id"`
SSHKeyPairPattern string `mapstructure:"ssh_keypair_pattern"`
// Unexported fields that are calculated from others
sshTimeout time.Duration
......@@ -45,6 +46,10 @@ func (c *RunConfig) Prepare(t *packer.ConfigTemplate) []error {
c.RawSSHTimeout = "1m"
}
if c.SSHKeyPairPattern == "" {
c.SSHKeyPairPattern = "packer %s"
}
// Validation
var err error
errs := make([]error, 0)
......
......@@ -126,3 +126,24 @@ func TestRunConfigPrepare_UserDataFile(t *testing.T) {
t.Fatalf("err: %s", err)
}
}
func TestRunConfigPrepare_SSHKeyPairPattern(t *testing.T) {
c := testConfig()
c.SSHKeyPairPattern = ""
if err := c.Prepare(nil); len(err) != 0 {
t.Fatalf("err: %s", err)
}
if c.SSHKeyPairPattern != "packer %s" {
t.Fatalf("invalid value: %s", c.SSHKeyPairPattern)
}
c.SSHKeyPairPattern = "valid-%s"
if err := c.Prepare(nil); len(err) != 0 {
t.Fatalf("err: %s", err)
}
if c.SSHKeyPairPattern != "valid-%s" {
t.Fatalf("invalid value: %s", c.SSHKeyPairPattern)
}
}
......@@ -13,8 +13,9 @@ import (
)
type StepKeyPair struct {
Debug bool
DebugKeyPath string
Debug bool
DebugKeyPath string
KeyPairPattern string
keyName string
}
......@@ -24,7 +25,7 @@ func (s *StepKeyPair) Run(state multistep.StateBag) multistep.StepAction {
ui := state.Get("ui").(packer.Ui)
ui.Say("Creating temporary keypair for this instance...")
keyName := fmt.Sprintf("packer %s", hex.EncodeToString(identifier.NewUUID().Raw()))
keyName := fmt.Sprintf(s.KeyPairPattern, hex.EncodeToString(identifier.NewUUID().Raw()))
log.Printf("temporary keypair name: %s", keyName)
keyResp, err := ec2conn.CreateKeyPair(keyName)
if err != nil {
......
......@@ -82,8 +82,9 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
// Build the steps
steps := []multistep.Step{
&awscommon.StepKeyPair{
Debug: b.config.PackerDebug,
DebugKeyPath: fmt.Sprintf("ec2_%s.pem", b.config.PackerBuildName),
Debug: b.config.PackerDebug,
DebugKeyPath: fmt.Sprintf("ec2_%s.pem", b.config.PackerBuildName),
KeyPairPattern: b.config.SSHKeyPairPattern,
},
&awscommon.StepSecurityGroup{
SecurityGroupId: b.config.SecurityGroupId,
......
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