Unify steps, fix some typos
This commit is contained in:
parent
16453173db
commit
bad1b95a49
|
@ -52,24 +52,22 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
|
|||
Debug: b.config.PackerDebug,
|
||||
DebugKeyPath: fmt.Sprintf("ssh_key_%s.pem", b.config.PackerBuildName),
|
||||
},
|
||||
new(stepCreateServer),
|
||||
&stepCreateServer{},
|
||||
&communicator.StepConnect{
|
||||
Config: &b.config.Comm,
|
||||
Host: getServerIP,
|
||||
SSHConfig: b.config.Comm.SSHConfigFunc(),
|
||||
},
|
||||
new(common.StepProvision),
|
||||
&common.StepProvision{},
|
||||
&common.StepCleanupTempKeys{
|
||||
Comm: &b.config.Comm,
|
||||
},
|
||||
new(stepShutdownServer),
|
||||
new(stepCreateSnapshot),
|
||||
&stepShutdownServer{},
|
||||
&stepCreateSnapshot{},
|
||||
}
|
||||
ui.Say("Steps OK")
|
||||
// Run the steps
|
||||
b.runner = common.NewRunner(steps, b.config.PackerConfig, ui)
|
||||
b.runner.Run(state)
|
||||
ui.Say("Run OK")
|
||||
// If there was an error, return that
|
||||
if rawErr, ok := state.GetOk("error"); ok {
|
||||
return nil, rawErr.(error)
|
||||
|
|
|
@ -44,7 +44,7 @@ func (s *stepCreateServer) Run(_ context.Context, state multistep.StateBag) mult
|
|||
UserData: userData,
|
||||
})
|
||||
if err != nil {
|
||||
err := fmt.Errorf("1Error creating server: %s", err)
|
||||
err := fmt.Errorf("Error creating server: %s", err)
|
||||
state.Put("error", err)
|
||||
ui.Error(err.Error())
|
||||
return multistep.ActionHalt
|
||||
|
|
|
@ -34,28 +34,28 @@ func (s *stepCreateSSHKey) Run(_ context.Context, state multistep.StateBag) mult
|
|||
priv, err := rsa.GenerateKey(rand.Reader, 2014)
|
||||
|
||||
// ASN.1 DER encoded form
|
||||
priv_der := x509.MarshalPKCS1PrivateKey(priv)
|
||||
priv_blk := pem.Block{
|
||||
privDER := x509.MarshalPKCS1PrivateKey(priv)
|
||||
privBLK := pem.Block{
|
||||
Type: "RSA PRIVATE KEY",
|
||||
Headers: nil,
|
||||
Bytes: priv_der,
|
||||
Bytes: privDER,
|
||||
}
|
||||
|
||||
// Set the private key in the config for later
|
||||
c.Comm.SSHPrivateKey = pem.EncodeToMemory(&priv_blk)
|
||||
c.Comm.SSHPrivateKey = pem.EncodeToMemory(&privBLK)
|
||||
|
||||
// Marshal the public key into SSH compatible format
|
||||
// TODO properly handle the public key error
|
||||
pub, _ := ssh.NewPublicKey(&priv.PublicKey)
|
||||
pub_sshformat := string(ssh.MarshalAuthorizedKey(pub))
|
||||
pubSSHFormat := string(ssh.MarshalAuthorizedKey(pub))
|
||||
|
||||
// The name of the public key on DO
|
||||
// The name of the public key on the Hetzner Cloud
|
||||
name := fmt.Sprintf("packer-%s", uuid.TimeOrderedUUID())
|
||||
|
||||
// Create the key!
|
||||
key, _, err := client.SSHKey.Create(context.TODO(), hcloud.SSHKeyCreateOpts{
|
||||
Name: name,
|
||||
PublicKey: pub_sshformat,
|
||||
PublicKey: pubSSHFormat,
|
||||
})
|
||||
if err != nil {
|
||||
err := fmt.Errorf("Error creating temporary SSH key: %s", err)
|
||||
|
@ -83,7 +83,7 @@ func (s *stepCreateSSHKey) Run(_ context.Context, state multistep.StateBag) mult
|
|||
defer f.Close()
|
||||
|
||||
// Write the key out
|
||||
if _, err := f.Write(pem.EncodeToMemory(&priv_blk)); err != nil {
|
||||
if _, err := f.Write(pem.EncodeToMemory(&privBLK)); err != nil {
|
||||
state.Put("error", fmt.Errorf("Error saving debug key: %s", err))
|
||||
return multistep.ActionHalt
|
||||
}
|
||||
|
@ -96,7 +96,6 @@ func (s *stepCreateSSHKey) Run(_ context.Context, state multistep.StateBag) mult
|
|||
}
|
||||
}
|
||||
}
|
||||
ui.Say("SSH Key OK")
|
||||
return multistep.ActionContinue
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ builder.
|
|||
can also be specified via environment variable `HCLOUD_TOKEN`,
|
||||
if set.
|
||||
|
||||
- `image` (string) - ID or name of image to create server in.
|
||||
- `image` (string) - ID or name of image to launch server from.
|
||||
|
||||
- `location` (string) - The name of the location to launch the server in.
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ description: |-
|
|||
<p>
|
||||
Out of the box Packer comes with support to build images for
|
||||
Amazon EC2, CloudStack, DigitalOcean, Docker, Google Compute
|
||||
Engine, Hetzner Cloud, Microsoft Azure, QEMU, VirtualBox, VMware, and more.
|
||||
Engine, Microsoft Azure, QEMU, VirtualBox, VMware, and more.
|
||||
Support for more platforms is on the way, and anyone can add
|
||||
new platforms via plugins.
|
||||
</p>
|
||||
|
|
Loading…
Reference in New Issue