Allow customization of SSH Key pair pattern
Defined in a template using ssh_keypair_pattern. Defaults to "packer %s"
This commit is contained in:
parent
1df0735713
commit
f953874448
|
@ -22,6 +22,7 @@ type RunConfig struct {
|
||||||
SecurityGroupId string `mapstructure:"security_group_id"`
|
SecurityGroupId string `mapstructure:"security_group_id"`
|
||||||
SubnetId string `mapstructure:"subnet_id"`
|
SubnetId string `mapstructure:"subnet_id"`
|
||||||
VpcId string `mapstructure:"vpc_id"`
|
VpcId string `mapstructure:"vpc_id"`
|
||||||
|
SSHKeyPairPattern string `mapstructure:"ssh_keypair_pattern"`
|
||||||
|
|
||||||
// Unexported fields that are calculated from others
|
// Unexported fields that are calculated from others
|
||||||
sshTimeout time.Duration
|
sshTimeout time.Duration
|
||||||
|
@ -45,6 +46,10 @@ func (c *RunConfig) Prepare(t *packer.ConfigTemplate) []error {
|
||||||
c.RawSSHTimeout = "1m"
|
c.RawSSHTimeout = "1m"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if c.SSHKeyPairPattern == "" {
|
||||||
|
c.SSHKeyPairPattern = "packer %s"
|
||||||
|
}
|
||||||
|
|
||||||
// Validation
|
// Validation
|
||||||
var err error
|
var err error
|
||||||
errs := make([]error, 0)
|
errs := make([]error, 0)
|
||||||
|
|
|
@ -126,3 +126,24 @@ func TestRunConfigPrepare_UserDataFile(t *testing.T) {
|
||||||
t.Fatalf("err: %s", err)
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ import (
|
||||||
type StepKeyPair struct {
|
type StepKeyPair struct {
|
||||||
Debug bool
|
Debug bool
|
||||||
DebugKeyPath string
|
DebugKeyPath string
|
||||||
|
KeyPairPattern string
|
||||||
|
|
||||||
keyName string
|
keyName string
|
||||||
}
|
}
|
||||||
|
@ -24,7 +25,7 @@ func (s *StepKeyPair) Run(state multistep.StateBag) multistep.StepAction {
|
||||||
ui := state.Get("ui").(packer.Ui)
|
ui := state.Get("ui").(packer.Ui)
|
||||||
|
|
||||||
ui.Say("Creating temporary keypair for this instance...")
|
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)
|
log.Printf("temporary keypair name: %s", keyName)
|
||||||
keyResp, err := ec2conn.CreateKeyPair(keyName)
|
keyResp, err := ec2conn.CreateKeyPair(keyName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -84,6 +84,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
|
||||||
&awscommon.StepKeyPair{
|
&awscommon.StepKeyPair{
|
||||||
Debug: b.config.PackerDebug,
|
Debug: b.config.PackerDebug,
|
||||||
DebugKeyPath: fmt.Sprintf("ec2_%s.pem", b.config.PackerBuildName),
|
DebugKeyPath: fmt.Sprintf("ec2_%s.pem", b.config.PackerBuildName),
|
||||||
|
KeyPairPattern: b.config.SSHKeyPairPattern,
|
||||||
},
|
},
|
||||||
&awscommon.StepSecurityGroup{
|
&awscommon.StepSecurityGroup{
|
||||||
SecurityGroupId: b.config.SecurityGroupId,
|
SecurityGroupId: b.config.SecurityGroupId,
|
||||||
|
|
Loading…
Reference in New Issue