Merge branch 'master' into amazon-import-format

This commit is contained in:
Adrien Delorme 2018-10-30 13:40:27 +01:00 committed by GitHub
commit e980ecee63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 61 additions and 11 deletions

View File

@ -1,8 +1,10 @@
package common package common
import ( import (
"crypto/tls"
"fmt" "fmt"
"log" "log"
"net/http"
"strings" "strings"
"time" "time"
@ -19,17 +21,18 @@ import (
// AccessConfig is for common configuration related to AWS access // AccessConfig is for common configuration related to AWS access
type AccessConfig struct { type AccessConfig struct {
AccessKey string `mapstructure:"access_key"` AccessKey string `mapstructure:"access_key"`
CustomEndpointEc2 string `mapstructure:"custom_endpoint_ec2"` CustomEndpointEc2 string `mapstructure:"custom_endpoint_ec2"`
DecodeAuthZMessages bool `mapstructure:"decode_authorization_messages"` DecodeAuthZMessages bool `mapstructure:"decode_authorization_messages"`
MFACode string `mapstructure:"mfa_code"` InsecureSkipTLSVerify bool `mapstructure:"insecure_skip_tls_verify"`
ProfileName string `mapstructure:"profile"` MFACode string `mapstructure:"mfa_code"`
RawRegion string `mapstructure:"region"` ProfileName string `mapstructure:"profile"`
SecretKey string `mapstructure:"secret_key"` RawRegion string `mapstructure:"region"`
SkipValidation bool `mapstructure:"skip_region_validation"` SecretKey string `mapstructure:"secret_key"`
SkipMetadataApiCheck bool `mapstructure:"skip_metadata_api_check"` SkipValidation bool `mapstructure:"skip_region_validation"`
Token string `mapstructure:"token"` SkipMetadataApiCheck bool `mapstructure:"skip_metadata_api_check"`
session *session.Session Token string `mapstructure:"token"`
session *session.Session
getEC2Connection func() ec2iface.EC2API getEC2Connection func() ec2iface.EC2API
} }
@ -60,6 +63,14 @@ func (c *AccessConfig) Session() (*session.Session, error) {
config = config.WithEndpoint(c.CustomEndpointEc2) config = config.WithEndpoint(c.CustomEndpointEc2)
} }
if c.InsecureSkipTLSVerify {
config := config.WithHTTPClient(cleanhttp.DefaultClient())
transport := config.HTTPClient.Transport.(*http.Transport)
transport.TLSClientConfig = &tls.Config{
InsecureSkipVerify: true,
}
}
opts := session.Options{ opts := session.Options{
SharedConfigState: session.SharedConfigEnable, SharedConfigState: session.SharedConfigEnable,
Config: *config, Config: *config,

View File

@ -45,6 +45,11 @@ type Config struct {
// your command(s) are executed. // your command(s) are executed.
Vars []string `mapstructure:"environment_vars"` Vars []string `mapstructure:"environment_vars"`
// A duration of how long to pause after the provisioner
RawPauseAfter string `mapstructure:"pause_after"`
PauseAfter time.Duration
// Write the Vars to a file and source them from there rather than declaring // Write the Vars to a file and source them from there rather than declaring
// inline // inline
UseEnvVarFile bool `mapstructure:"use_env_var_file"` UseEnvVarFile bool `mapstructure:"use_env_var_file"`
@ -189,6 +194,14 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
} }
} }
if p.config.RawPauseAfter != "" {
p.config.PauseAfter, err = time.ParseDuration(p.config.RawPauseAfter)
if err != nil {
errs = packer.MultiErrorAppend(
errs, fmt.Errorf("Failed parsing pause_after: %s", err))
}
}
if errs != nil && len(errs.Errors) > 0 { if errs != nil && len(errs.Errors) > 0 {
return errs return errs
} }
@ -371,6 +384,14 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
} }
} }
if p.config.RawPauseAfter != "" {
ui.Say(fmt.Sprintf("Pausing %s after this provisioner...", p.config.PauseAfter))
select {
case <-time.After(p.config.PauseAfter):
return nil
}
}
return nil return nil
} }

View File

@ -154,6 +154,9 @@ each category, the available configuration keys are alphabetized.
associated with AMIs, which have been deregistered by `force_deregister`. associated with AMIs, which have been deregistered by `force_deregister`.
Default `false`. Default `false`.
- `insecure_skip_tls_verify` (boolean) - This allows skipping TLS verification of
the AWS EC2 endpoint. The default is `false`.
- `kms_key_id` (string) - ID, alias or ARN of the KMS key to use for boot - `kms_key_id` (string) - ID, alias or ARN of the KMS key to use for boot
volume encryption. This only applies to the main `region`, other regions volume encryption. This only applies to the main `region`, other regions
where the AMI will be copied will be encrypted by the default EBS KMS key. where the AMI will be copied will be encrypted by the default EBS KMS key.

View File

@ -242,6 +242,9 @@ builder.
profile](https://docs.aws.amazon.com/IAM/latest/UserGuide/instance-profiles.html) profile](https://docs.aws.amazon.com/IAM/latest/UserGuide/instance-profiles.html)
to launch the EC2 instance with. to launch the EC2 instance with.
- `insecure_skip_tls_verify` (boolean) - This allows skipping TLS verification of
the AWS EC2 endpoint. The default is `false`.
- `launch_block_device_mappings` (array of block device mappings) - Add one - `launch_block_device_mappings` (array of block device mappings) - Add one
or more block devices before the Packer build starts. If you add instance or more block devices before the Packer build starts. If you add instance
store volumes or EBS volumes in addition to the root device volume, the store volumes or EBS volumes in addition to the root device volume, the

View File

@ -235,6 +235,9 @@ builder.
profile](https://docs.aws.amazon.com/IAM/latest/UserGuide/instance-profiles.html) profile](https://docs.aws.amazon.com/IAM/latest/UserGuide/instance-profiles.html)
to launch the EC2 instance with. to launch the EC2 instance with.
- `insecure_skip_tls_verify` (boolean) - This allows skipping TLS verification of
the AWS EC2 endpoint. The default is `false`.
- `launch_block_device_mappings` (array of block device mappings) - Add one - `launch_block_device_mappings` (array of block device mappings) - Add one
or more block devices before the Packer build starts. If you add instance or more block devices before the Packer build starts. If you add instance
store volumes or EBS volumes in addition to the root device volume, the store volumes or EBS volumes in addition to the root device volume, the

View File

@ -189,6 +189,9 @@ builder.
profile](https://docs.aws.amazon.com/IAM/latest/UserGuide/instance-profiles.html) profile](https://docs.aws.amazon.com/IAM/latest/UserGuide/instance-profiles.html)
to launch the EC2 instance with. to launch the EC2 instance with.
- `insecure_skip_tls_verify` (boolean) - This allows skipping TLS verification of
the AWS EC2 endpoint. The default is `false`.
- `mfa_code` (string) - The MFA - `mfa_code` (string) - The MFA
[TOTP](https://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm) [TOTP](https://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm)
code. This should probably be a user variable since it changes all the code. This should probably be a user variable since it changes all the

View File

@ -89,6 +89,9 @@ Optional:
the format of the source virtual machine image. The resulting artifact from the builder the format of the source virtual machine image. The resulting artifact from the builder
is assumed to have a file extension matching the format. This defaults to `ova`. is assumed to have a file extension matching the format. This defaults to `ova`.
- `insecure_skip_tls_verify` (boolean) - This allows skipping TLS verification of
the AWS EC2 endpoint. The default is `false`.
- `license_type` (string) - The license type to be used for the Amazon - `license_type` (string) - The license type to be used for the Amazon
Machine Image (AMI) after importing. Valid values: `AWS` or `BYOL` Machine Image (AMI) after importing. Valid values: `AWS` or `BYOL`
(default). For more details regarding licensing, see (default). For more details regarding licensing, see

View File

@ -117,6 +117,9 @@ Optional parameters:
exists in order to deal with times when SSH may restart, such as a system exists in order to deal with times when SSH may restart, such as a system
reboot. Set this to a higher value if reboots take a longer amount of time. reboot. Set this to a higher value if reboots take a longer amount of time.
- `pause_after` (string) - Wait the amount of time after provisioning a shell
script, this pause be taken if all previous steps were successful.
## Execute Command Example ## Execute Command Example
To many new users, the `execute_command` is puzzling. However, it provides an To many new users, the `execute_command` is puzzling. However, it provides an