amazon: Allow SSH Agent auth for existing key pair
This commit allows SSH Agent authentication to be used with an existing key pair defined in AWS.
This commit is contained in:
parent
7425fef2c7
commit
395d88941c
|
@ -25,13 +25,8 @@ type StepKeyPair struct {
|
||||||
func (s *StepKeyPair) Run(state multistep.StateBag) multistep.StepAction {
|
func (s *StepKeyPair) Run(state multistep.StateBag) multistep.StepAction {
|
||||||
ui := state.Get("ui").(packer.Ui)
|
ui := state.Get("ui").(packer.Ui)
|
||||||
|
|
||||||
if s.SSHAgentAuth {
|
|
||||||
ui.Say("Using SSH Agent")
|
|
||||||
return multistep.ActionContinue
|
|
||||||
}
|
|
||||||
|
|
||||||
if s.PrivateKeyFile != "" {
|
if s.PrivateKeyFile != "" {
|
||||||
ui.Say("Using existing ssh private key")
|
ui.Say("Using existing SSH private key")
|
||||||
privateKeyBytes, err := ioutil.ReadFile(s.PrivateKeyFile)
|
privateKeyBytes, err := ioutil.ReadFile(s.PrivateKeyFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
state.Put("error", fmt.Errorf(
|
state.Put("error", fmt.Errorf(
|
||||||
|
@ -45,6 +40,17 @@ func (s *StepKeyPair) Run(state multistep.StateBag) multistep.StepAction {
|
||||||
return multistep.ActionContinue
|
return multistep.ActionContinue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if s.SSHAgentAuth && s.KeyPairName == "" {
|
||||||
|
ui.Say("Using SSH Agent with key pair in Source AMI")
|
||||||
|
return multistep.ActionContinue
|
||||||
|
}
|
||||||
|
|
||||||
|
if s.SSHAgentAuth && s.KeyPairName != "" {
|
||||||
|
ui.Say(fmt.Sprintf("Using SSH Agent for existing key pair %s", s.KeyPairName))
|
||||||
|
state.Put("keyPair", s.KeyPairName)
|
||||||
|
return multistep.ActionContinue
|
||||||
|
}
|
||||||
|
|
||||||
if s.TemporaryKeyPairName == "" {
|
if s.TemporaryKeyPairName == "" {
|
||||||
ui.Say("Not using temporary keypair")
|
ui.Say("Not using temporary keypair")
|
||||||
state.Put("keyPair", "")
|
state.Put("keyPair", "")
|
||||||
|
|
|
@ -188,17 +188,20 @@ builder.
|
||||||
`Linux/UNIX (Amazon VPC)`, `SUSE Linux (Amazon VPC)`, `Windows (Amazon VPC)`
|
`Linux/UNIX (Amazon VPC)`, `SUSE Linux (Amazon VPC)`, `Windows (Amazon VPC)`
|
||||||
|
|
||||||
- `ssh_keypair_name` (string) - If specified, this is the key that will be
|
- `ssh_keypair_name` (string) - If specified, this is the key that will be
|
||||||
used for SSH with the machine. By default, this is blank, and Packer will
|
used for SSH with the machine. The key must match a key pair name loaded
|
||||||
|
up into Amazon EC2. By default, this is blank, and Packer will
|
||||||
generate a temporary keypair unless
|
generate a temporary keypair unless
|
||||||
[`ssh_password`](/docs/templates/communicator.html#ssh_password) is used.
|
[`ssh_password`](/docs/templates/communicator.html#ssh_password) is used.
|
||||||
[`ssh_private_key_file`](/docs/templates/communicator.html#ssh_private_key_file)
|
[`ssh_private_key_file`](/docs/templates/communicator.html#ssh_private_key_file)
|
||||||
must be specified with this.
|
or `ssh_agent_auth` must be specified when `ssh_keypair_name` is utilized.
|
||||||
|
|
||||||
- `ssh_agent_auth` (boolean) - If true, the local SSH agent will be used to
|
- `ssh_agent_auth` (boolean) - If true, the local SSH agent will be used to
|
||||||
authenticate connections to the source instance. No temporary keypair will
|
authenticate connections to the source instance. No temporary keypair will
|
||||||
be created, and the values of `ssh_password` and `ssh_private_key_file` will
|
be created, and the values of `ssh_password` and `ssh_private_key_file` will
|
||||||
be ignored. This is suitable for use if the source AMI already has authorized
|
be ignored. To use this option with a key pair already configured in the source
|
||||||
keys configured.
|
AMI, leave the `ssh_keypair_name` blank. To associate an existing key pair
|
||||||
|
in AWS with the source instance, set the `ssh_keypair_name` field to the name
|
||||||
|
of the key pair.
|
||||||
|
|
||||||
- `ssh_private_ip` (boolean) - If true, then SSH will always use the private
|
- `ssh_private_ip` (boolean) - If true, then SSH will always use the private
|
||||||
IP if available.
|
IP if available.
|
||||||
|
|
|
@ -210,13 +210,15 @@ builder.
|
||||||
generate a temporary keypair unless
|
generate a temporary keypair unless
|
||||||
[`ssh_password`](/docs/templates/communicator.html#ssh_password) is used.
|
[`ssh_password`](/docs/templates/communicator.html#ssh_password) is used.
|
||||||
[`ssh_private_key_file`](/docs/templates/communicator.html#ssh_private_key_file)
|
[`ssh_private_key_file`](/docs/templates/communicator.html#ssh_private_key_file)
|
||||||
must be specified when `ssh_keypair_name` is utilized.
|
or `ssh_agent_auth` must be specified when `ssh_keypair_name` is utilized.
|
||||||
|
|
||||||
- `ssh_agent_auth` (boolean) - If true, the local SSH agent will be used to
|
- `ssh_agent_auth` (boolean) - If true, the local SSH agent will be used to
|
||||||
authenticate connections to the source instance. No temporary keypair will
|
authenticate connections to the source instance. No temporary keypair will
|
||||||
be created, and the values of `ssh_password` and `ssh_private_key_file` will
|
be created, and the values of `ssh_password` and `ssh_private_key_file` will
|
||||||
be ignored. This is suitable for use if the source AMI already has authorized
|
be ignored. To use this option with a key pair already configured in the source
|
||||||
keys configured.
|
AMI, leave the `ssh_keypair_name` blank. To associate an existing key pair
|
||||||
|
in AWS with the source instance, set the `ssh_keypair_name` field to the name
|
||||||
|
of the key pair.
|
||||||
|
|
||||||
- `ssh_private_ip` (boolean) - If true, then SSH will always use the private
|
- `ssh_private_ip` (boolean) - If true, then SSH will always use the private
|
||||||
IP if available.
|
IP if available.
|
||||||
|
|
Loading…
Reference in New Issue