builder.amazon: use c.Comm for ssh
This commit is contained in:
parent
dffcbb7a35
commit
ef4ca9c48e
|
@ -66,10 +66,10 @@ func (c *RunConfig) Prepare(ctx *interpolate.Context) []error {
|
||||||
// ssh_private_key_file, then create a temporary one, but only if the
|
// ssh_private_key_file, then create a temporary one, but only if the
|
||||||
// temporary_key_pair_name has not been provided and we are not using
|
// temporary_key_pair_name has not been provided and we are not using
|
||||||
// ssh_password.
|
// ssh_password.
|
||||||
if c.Comm.SSHKeyPairName == "" && c.TemporaryKeyPairName == "" &&
|
if c.Comm.SSHKeyPairName == "" && c.Comm.SSHTemporaryKeyPairName == "" &&
|
||||||
c.Comm.SSHPrivateKeyFile == "" && c.Comm.SSHPassword == "" {
|
c.Comm.SSHPrivateKeyFile == "" && c.Comm.SSHPassword == "" {
|
||||||
|
|
||||||
c.TemporaryKeyPairName = fmt.Sprintf("packer_%s", uuid.TimeOrderedUUID())
|
c.Comm.SSHTemporaryKeyPairName = fmt.Sprintf("packer_%s", uuid.TimeOrderedUUID())
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.WindowsPasswordTimeout == 0 {
|
if c.WindowsPasswordTimeout == 0 {
|
||||||
|
|
|
@ -206,27 +206,27 @@ func TestRunConfigPrepare_UserDataFile(t *testing.T) {
|
||||||
|
|
||||||
func TestRunConfigPrepare_TemporaryKeyPairName(t *testing.T) {
|
func TestRunConfigPrepare_TemporaryKeyPairName(t *testing.T) {
|
||||||
c := testConfig()
|
c := testConfig()
|
||||||
c.TemporaryKeyPairName = ""
|
c.Comm.SSHTemporaryKeyPairName = ""
|
||||||
if err := c.Prepare(nil); len(err) != 0 {
|
if err := c.Prepare(nil); len(err) != 0 {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.TemporaryKeyPairName == "" {
|
if c.Comm.SSHTemporaryKeyPairName == "" {
|
||||||
t.Fatal("keypair name is empty")
|
t.Fatal("keypair name is empty")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Match prefix and UUID, e.g. "packer_5790d491-a0b8-c84c-c9d2-2aea55086550".
|
// Match prefix and UUID, e.g. "packer_5790d491-a0b8-c84c-c9d2-2aea55086550".
|
||||||
r := regexp.MustCompile(`\Apacker_(?:(?i)[a-f\d]{8}(?:-[a-f\d]{4}){3}-[a-f\d]{12}?)\z`)
|
r := regexp.MustCompile(`\Apacker_(?:(?i)[a-f\d]{8}(?:-[a-f\d]{4}){3}-[a-f\d]{12}?)\z`)
|
||||||
if !r.MatchString(c.TemporaryKeyPairName) {
|
if !r.MatchString(c.Comm.SSHTemporaryKeyPairName) {
|
||||||
t.Fatal("keypair name is not valid")
|
t.Fatal("keypair name is not valid")
|
||||||
}
|
}
|
||||||
|
|
||||||
c.TemporaryKeyPairName = "ssh-key-123"
|
c.Comm.SSHTemporaryKeyPairName = "ssh-key-123"
|
||||||
if err := c.Prepare(nil); len(err) != 0 {
|
if err := c.Prepare(nil); len(err) != 0 {
|
||||||
t.Fatalf("err: %s", err)
|
t.Fatalf("err: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.TemporaryKeyPairName != "ssh-key-123" {
|
if c.Comm.SSHTemporaryKeyPairName != "ssh-key-123" {
|
||||||
t.Fatal("keypair name does not match")
|
t.Fatal("keypair name does not match")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,10 +14,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type StepKeyPair struct {
|
type StepKeyPair struct {
|
||||||
Debug bool
|
Debug bool
|
||||||
Comm *communicator.Config
|
Comm *communicator.Config
|
||||||
DebugKeyPath string
|
DebugKeyPath string
|
||||||
TemporaryKeyPairName string
|
|
||||||
|
|
||||||
doCleanup bool
|
doCleanup bool
|
||||||
}
|
}
|
||||||
|
@ -50,7 +49,7 @@ func (s *StepKeyPair) Run(_ context.Context, state multistep.StateBag) multistep
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.TemporaryKeyPairName == "" {
|
if s.Comm.SSHTemporaryKeyPairName == "" {
|
||||||
ui.Say("Not using temporary keypair")
|
ui.Say("Not using temporary keypair")
|
||||||
state.Put("keyPair", "")
|
state.Put("keyPair", "")
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
|
@ -58,9 +57,9 @@ func (s *StepKeyPair) Run(_ context.Context, state multistep.StateBag) multistep
|
||||||
|
|
||||||
ec2conn := state.Get("ec2").(*ec2.EC2)
|
ec2conn := state.Get("ec2").(*ec2.EC2)
|
||||||
|
|
||||||
ui.Say(fmt.Sprintf("Creating temporary keypair: %s", s.TemporaryKeyPairName))
|
ui.Say(fmt.Sprintf("Creating temporary keypair: %s", s.Comm.SSHTemporaryKeyPairName))
|
||||||
keyResp, err := ec2conn.CreateKeyPair(&ec2.CreateKeyPairInput{
|
keyResp, err := ec2conn.CreateKeyPair(&ec2.CreateKeyPairInput{
|
||||||
KeyName: &s.TemporaryKeyPairName})
|
KeyName: &s.Comm.SSHTemporaryKeyPairName})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
state.Put("error", fmt.Errorf("Error creating temporary keypair: %s", err))
|
state.Put("error", fmt.Errorf("Error creating temporary keypair: %s", err))
|
||||||
return multistep.ActionHalt
|
return multistep.ActionHalt
|
||||||
|
@ -69,7 +68,7 @@ func (s *StepKeyPair) Run(_ context.Context, state multistep.StateBag) multistep
|
||||||
s.doCleanup = true
|
s.doCleanup = true
|
||||||
|
|
||||||
// Set some data for use in future steps
|
// Set some data for use in future steps
|
||||||
s.Comm.SSHKeyPairName = s.TemporaryKeyPairName
|
s.Comm.SSHKeyPairName = s.Comm.SSHTemporaryKeyPairName
|
||||||
s.Comm.SSHPrivateKey = []byte(*keyResp.KeyMaterial)
|
s.Comm.SSHPrivateKey = []byte(*keyResp.KeyMaterial)
|
||||||
|
|
||||||
// If we're in debug mode, output the private key to the working
|
// If we're in debug mode, output the private key to the working
|
||||||
|
@ -111,10 +110,10 @@ func (s *StepKeyPair) Cleanup(state multistep.StateBag) {
|
||||||
|
|
||||||
// Remove the keypair
|
// Remove the keypair
|
||||||
ui.Say("Deleting temporary keypair...")
|
ui.Say("Deleting temporary keypair...")
|
||||||
_, err := ec2conn.DeleteKeyPair(&ec2.DeleteKeyPairInput{KeyName: &s.TemporaryKeyPairName})
|
_, err := ec2conn.DeleteKeyPair(&ec2.DeleteKeyPairInput{KeyName: &s.Comm.SSHTemporaryKeyPairName})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ui.Error(fmt.Sprintf(
|
ui.Error(fmt.Sprintf(
|
||||||
"Error cleaning up keypair. Please delete the key manually: %s", s.TemporaryKeyPairName))
|
"Error cleaning up keypair. Please delete the key manually: %s", s.Comm.SSHTemporaryKeyPairName))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Also remove the physical key if we're debugging.
|
// Also remove the physical key if we're debugging.
|
||||||
|
|
|
@ -179,10 +179,9 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
|
||||||
AmiFilters: b.config.SourceAmiFilter,
|
AmiFilters: b.config.SourceAmiFilter,
|
||||||
},
|
},
|
||||||
&awscommon.StepKeyPair{
|
&awscommon.StepKeyPair{
|
||||||
Debug: b.config.PackerDebug,
|
Debug: b.config.PackerDebug,
|
||||||
Comm: &b.config.RunConfig.Comm,
|
Comm: &b.config.RunConfig.Comm,
|
||||||
DebugKeyPath: fmt.Sprintf("ec2_%s.pem", b.config.PackerBuildName),
|
DebugKeyPath: fmt.Sprintf("ec2_%s.pem", b.config.PackerBuildName),
|
||||||
TemporaryKeyPairName: b.config.TemporaryKeyPairName,
|
|
||||||
},
|
},
|
||||||
&awscommon.StepSecurityGroup{
|
&awscommon.StepSecurityGroup{
|
||||||
SecurityGroupIds: b.config.SecurityGroupIds,
|
SecurityGroupIds: b.config.SecurityGroupIds,
|
||||||
|
|
|
@ -196,10 +196,9 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
|
||||||
AmiFilters: b.config.SourceAmiFilter,
|
AmiFilters: b.config.SourceAmiFilter,
|
||||||
},
|
},
|
||||||
&awscommon.StepKeyPair{
|
&awscommon.StepKeyPair{
|
||||||
Debug: b.config.PackerDebug,
|
Debug: b.config.PackerDebug,
|
||||||
Comm: &b.config.RunConfig.Comm,
|
Comm: &b.config.RunConfig.Comm,
|
||||||
DebugKeyPath: fmt.Sprintf("ec2_%s.pem", b.config.PackerBuildName),
|
DebugKeyPath: fmt.Sprintf("ec2_%s.pem", b.config.PackerBuildName),
|
||||||
TemporaryKeyPairName: b.config.TemporaryKeyPairName,
|
|
||||||
},
|
},
|
||||||
&awscommon.StepSecurityGroup{
|
&awscommon.StepSecurityGroup{
|
||||||
SecurityGroupIds: b.config.SecurityGroupIds,
|
SecurityGroupIds: b.config.SecurityGroupIds,
|
||||||
|
|
|
@ -171,10 +171,9 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
|
||||||
AmiFilters: b.config.SourceAmiFilter,
|
AmiFilters: b.config.SourceAmiFilter,
|
||||||
},
|
},
|
||||||
&awscommon.StepKeyPair{
|
&awscommon.StepKeyPair{
|
||||||
Debug: b.config.PackerDebug,
|
Debug: b.config.PackerDebug,
|
||||||
Comm: &b.config.RunConfig.Comm,
|
Comm: &b.config.RunConfig.Comm,
|
||||||
DebugKeyPath: fmt.Sprintf("ec2_%s.pem", b.config.PackerBuildName),
|
DebugKeyPath: fmt.Sprintf("ec2_%s.pem", b.config.PackerBuildName),
|
||||||
TemporaryKeyPairName: b.config.TemporaryKeyPairName,
|
|
||||||
},
|
},
|
||||||
&awscommon.StepSecurityGroup{
|
&awscommon.StepSecurityGroup{
|
||||||
SecurityGroupIds: b.config.SecurityGroupIds,
|
SecurityGroupIds: b.config.SecurityGroupIds,
|
||||||
|
|
|
@ -257,10 +257,9 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
|
||||||
AmiFilters: b.config.SourceAmiFilter,
|
AmiFilters: b.config.SourceAmiFilter,
|
||||||
},
|
},
|
||||||
&awscommon.StepKeyPair{
|
&awscommon.StepKeyPair{
|
||||||
Debug: b.config.PackerDebug,
|
Debug: b.config.PackerDebug,
|
||||||
Comm: &b.config.RunConfig.Comm,
|
Comm: &b.config.RunConfig.Comm,
|
||||||
DebugKeyPath: fmt.Sprintf("ec2_%s.pem", b.config.PackerBuildName),
|
DebugKeyPath: fmt.Sprintf("ec2_%s.pem", b.config.PackerBuildName),
|
||||||
TemporaryKeyPairName: b.config.TemporaryKeyPairName,
|
|
||||||
},
|
},
|
||||||
&awscommon.StepSecurityGroup{
|
&awscommon.StepSecurityGroup{
|
||||||
CommConfig: &b.config.RunConfig.Comm,
|
CommConfig: &b.config.RunConfig.Comm,
|
||||||
|
|
Loading…
Reference in New Issue