Adrien Delorme
aae1992649
remove default PauseBeforeSSM, this will have to be set manually
2020-10-29 13:38:03 +01:00
Adrien Delorme
6c45f04467
Delete ssm_mock_funcs.go
2020-10-29 13:37:44 +01:00
Adrien Delorme
5d06a6e6df
rename file correctly
2020-10-29 13:26:09 +01:00
Adrien Delorme
c6e2dd5538
remove unit test file for now, I think that an acceptance test will be easier here
2020-10-29 13:22:17 +01:00
Adrien Delorme
a4bd744955
simplify things a bit more
2020-10-29 13:11:07 +01:00
Adrien Delorme
aef3d24213
Update step_create_ssm_tunnel.go
2020-10-29 12:31:01 +01:00
Adrien Delorme
f329cb5b93
simplify code
2020-10-29 12:18:41 +01:00
Adrien Delorme
b058de072a
move packer/builder/amazon/common.IsAWSErr to builder/amazon/common/awserrors.Matches
...
to avoid cyclic dependency issues
2020-10-29 12:02:41 +01:00
Adrien Delorme
8e355d0fe7
Move ssm code to its own ssm package and make it singlethreaded
2020-10-29 11:57:29 +01:00
Wilken Rivera
646b973bd3
Remove logic to retry a connection that reuses an existing SSM Session
...
After testing it was found that once an session is terminated via an
instance restart, console termination, or SSM agent restart. Any active
session will essentially be terminated and unusable. So knowing that it
is always best to start a new session and let the old one timeout get
terminated.
2020-10-28 06:36:23 -04:00
Wilken Rivera
dff9cde775
Remove waitgroups
2020-10-28 06:36:23 -04:00
Wilken Rivera
eb11009e2a
Check for closed channels as opposed to using a separate closeRetry channel
2020-10-28 06:36:23 -04:00
sylviamoss
aa73cc7d7e
add close chan to avoid unwanted retries
2020-10-27 16:32:20 -04:00
sylviamoss
1f62249097
add retry terminated session chan
2020-10-27 16:32:20 -04:00
sylviamoss
8e3f3e514c
improve logs
2020-10-27 16:32:20 -04:00
sylviamoss
b2c7897f58
add WaitGroup to avoid data race
2020-10-27 16:32:20 -04:00
sylviamoss
1c2b469acd
add retry channel to ssm driver
2020-10-27 16:32:19 -04:00
Megan Marsh
b8e6e2c081
Merge pull request #10085 from 10000coins/f-aws-tenancy
...
builder/amazon: Support for source instance tenancy
2020-10-19 12:49:07 -07:00
Evan Pipho
608307cd1e
Re-allow spot + tenancy. Validate tenancy is set to a usable value
2020-10-16 21:43:22 +00:00
Evan Pipho
d5d1a8708e
Add tests for Tenancy vs Spot Price
2020-10-16 21:43:22 +00:00
Evan Pipho
6967e02103
Add support for source instance tenancy to amazon builders
2020-10-16 21:43:22 +00:00
Matt Rogers
15f97421e2
builder/amazon: Add io2 as a supported volume type
...
io2 volumes are new as of 2020-08-24. This adds support for specifying
them in a packer template and having the iops value specified take
effect.
2020-10-14 09:01:17 -05:00
Megan Marsh
4c0ac6917e
switch to using aws base config, which means we're using code tested and maitnained by the terraform crowd.
2020-09-29 14:26:38 -07:00
Sylvia Moss
96e3def294
Add pause_before_ssm config to pause before establishing the Session Manager session ( #9988 )
2020-09-25 10:19:19 +02:00
Megan Marsh
d66b358100
Merge pull request #9991 from hashicorp/b-amazon-ssm-infinite-loop
...
amazon/ssm_driver: Update log polling logic
2020-09-24 09:55:39 -07:00
Wilken Rivera
2f2b5683a2
amazon/ssm_driver: Update log polling logic
...
This change checks for closed iochans related to the log polling
function and will break out of the loop when both channels are closed.
Which is an indicator that the SSM session has been terminated by some
external process. This fixes an issue where Packer hangs, due to the
infinite loop, when an SSM session is killed outside of Packer.
Related to #9442
2020-09-24 10:19:37 -04:00
Megan Marsh
429d431365
Implement assume_role for Packer. This functionality is copied shamelessly
...
from the Terraform AWS provider
2020-09-23 13:18:26 -07:00
Sylvia Moss
d347bbec4c
Retry fleet creating only on invalid IAM instance profile ( #9946 )
2020-09-18 17:05:36 +02:00
Adrien Delorme
0d0bd9ce75
name fields of PolicyDocument correctly in HCL ( #9812 )
...
withouth this fix we would have had to do
```hcl
temporary_iam_instance_profile_policy_document {
statement {
action = ["*"]
effect = "Allow"
resource = ["*"]
}
version = "2012-10-17"
}
```
instead of the same document but with capitalised fields
2020-08-25 10:53:56 +02:00
Adrien Delorme
a0c09e85df
retry spot instance creation when an "Invalid IAM Instance Profile name" error pops up ( #9810 )
...
PutRolePolicy & AddRoleToInstanceProfile are eventually consistent but it is not possible to wait for them to be done here: 0785c2f6fc/builder/amazon/common/step_iam_instance_profile.go (L117-L134)
which was causing the `CreateFleet` to fail (100% for me). So for now we retry a bit later. Waiting 5 seconds after the previously linked code also fixed this.
Test file:
```json
{
"builders": [
{
"type": "amazon-ebs",
"region": "eu-west-1",
"ami_name": "ubuntu-16.04 test {{timestamp}}",
"ami_description": "Ubuntu 16.04 LTS - expand root partition",
"source_ami_filter": {
"filters": {
"virtualization-type": "hvm",
"name": "ubuntu/images/*/ubuntu-xenial-16.04-amd64-server-*",
"root-device-type": "ebs"
},
"owners": [
"099720109477"
],
"most_recent": true
},
"spot_price": "0.03",
"spot_instance_types": [
"t2.small"
],
"encrypt_boot": true,
"ssh_username": "ubuntu",
"ssh_interface": "session_manager",
"temporary_iam_instance_profile_policy_document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"*"
],
"Resource": "*"
}
]
},
"communicator": "ssh"
}
]}
```
2020-08-25 10:10:32 +02:00
sylviamoss
1a0d5a93ee
fix max_attempts typo
2020-08-17 17:58:22 +02:00
sylviamoss
788dc32598
add aws_polling config option to override env variables
2020-08-17 17:15:32 +02:00
Megan Marsh
8b4993e44c
fix docs for kms key ids ( #9766 )
2020-08-14 11:35:35 +02:00
Megan Marsh
54469c4728
Add all of the custom AWS template engines to GeneratedData for use b… ( #9751 )
2020-08-12 10:43:15 +02:00
Megan Marsh
f9df185ef1
Merge pull request #9579 from hashicorp/fix_9562
...
wrap CreateImage call in a retry to account for eventual consistencey…
2020-07-22 08:43:10 -07:00
Megan Marsh
a56942d3c7
change isAwsErr to an exported func so I can use it in other aws modules.
2020-07-21 15:30:45 -07:00
Adrien Delorme
810f161d22
builder/amazon/common/block_device.go: replace tabs with words
2020-07-20 16:34:13 +02:00
Adrien Delorme
966b17d2b5
builder/amazon/common/access_config.go: replace tabs with words
2020-07-20 16:31:23 +02:00
Adrien Delorme
5c4901c2c2
builder/amazon/common/run_config.go: replace tabs with words
2020-07-20 16:28:14 +02:00
Adrien Delorme
1455a29f2b
remove tabs for security_group_filter too
2020-07-20 16:24:47 +02:00
Adrien Delorme
191094edcc
better `disable_stop_instance` docs
2020-07-20 16:21:43 +02:00
Megan Marsh
530f5e3f63
more additions to partials
2020-07-17 15:52:11 -07:00
Megan Marsh
a1651977b3
add tabs to generated docs from access_config and run_config structs
2020-07-17 15:10:55 -07:00
Megan Marsh
4d3b2cea96
Merge pull request #9480 from adongy/master
...
aws: retry fetching blockdevicemapping if empty
2020-07-08 12:32:12 -07:00
Megan Marsh
a885e620ee
don't error for no mappings if no mappings were set.
2020-07-08 11:55:56 -07:00
Megan Marsh
122e80f591
generated code
2020-06-30 10:12:50 -07:00
Megan Marsh
0122530a07
make statement an array of strings
2020-06-30 10:01:49 -07:00
Anthony Dong
2322d3ae6b
aws: retry fetching blockdevicemapping if empty
2020-06-25 10:48:24 +02:00
Wilken Rivera
a8dfb66d6c
docs/builder/amazon: Add WinRM unsupported note to Session Manager docs
...
Closes #9451
Co-authored-by: Adrien Delorme <azr@users.noreply.github.com>
2020-06-23 07:41:21 -04:00
Adrien Delorme
40947c2bf6
HCL2: generate hcl tags with go-cty tags too ( #9306 )
...
This will allow to generate the config files:
```go
package main
import (
"fmt"
"github.com/hashicorp/hcl/v2/gohcl"
"github.com/hashicorp/hcl/v2/hclwrite"
"github.com/hashicorp/packer/builder/alicloud/ecs"
)
func main() {
name := "name"
app := ecs.FlatConfig{
AlicloudImageName: &name,
ECSSystemDiskMapping: &ecs.FlatAlicloudDiskDevice{
DiskName: &name,
},
}
f := hclwrite.NewEmptyFile()
block := gohcl.EncodeAsBlock(&app, `source "something" "something"`)
f.Body().AppendBlock(block)
fmt.Printf("%s", f.Bytes())
}
```
Will output:
```
source "something" "something" {
packer_user_variables = null
packer_sensitive_variables = null
image_name = "name"
image_share_account = null
image_unshare_account = null
image_copy_regions = null
image_copy_names = null
tags = null
tag = null
system_disk_mapping = { disk_category = null, disk_delete_with_instance = null, disk_descri
ption = null, disk_device = null, disk_encrypted = null, disk_name = "name", disk_size = null, disk_
snapshot_id = null }
image_disk_mappings = null
ssh_remote_tunnels = null
ssh_local_tunnels = null
ssh_public_key = null
ssh_private_key = null
}
```
This is a good first step for #9015 and #9282
fix #9304
2020-05-28 11:19:00 +02:00
nitrocode
6d29ec956b
Added SourceAMICreationDate
2020-05-26 15:04:03 -04:00
Wilken Rivera
b5639d4697
tests/builder/amazon: Enhance the test coverage for SSM Tunnel related steps ( #9213 )
...
* test/builder/amazon: Update mocks to properly test SSM tunnel and driver code base
* Update mod files
2020-05-13 10:10:55 -04:00
Wilken Rivera
6f5f6bf999
builder/amazon Fix invalid pointer issue for non SSMAgengtEnabled builds
...
Tests before change
```
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x1392ca2]
goroutine 299 [running]:
github.com/hashicorp/packer/builder/amazon/common.(*StepCreateSSMTunnel).Cleanup(0xc0003dc460, 0x4d1a4c0, 0xc0006e9800)
/home/wilken/Development/packer/builder/amazon/common/step_create_ssm_tunnel.go:95 +0xf2
github.com/hashicorp/packer/helper/multistep.(*BasicRunner).Run(0xc0006e98f0, 0x4d408c0, 0xc00065fcc0, 0x4d1a4c0, 0xc0006e9800)
/home/wilken/Development/packer/helper/multistep/basic_runner.go:79 +0x2c6
github.com/hashicorp/packer/builder/amazon/ebs.(*Builder).Run(0xc000726800, 0x4d408c0, 0xc00065fcc0, 0x4d5e300, 0xc0006e8d80, 0x4cc7220, 0xc000434120, 0x0, 0x0, 0x0, ...)
/home/wilken/Development/packer/builder/amazon/ebs/builder.go:330 +0x17e2
github.com/hashicorp/packer/packer.(*CoreBuild).Run(0xc000720500, 0x4d408c0, 0xc00065fcc0, 0x4d5e180, 0xc0006fe510, 0x0, 0x0, 0x0, 0x0, 0x0)
/home/wilken/Development/packer/packer/build.go:287 +0x7ef
github.com/hashicorp/packer/command.(*BuildCommand).RunContext.func1(0xc0004d14d0, 0xc0003dc3c0, 0xc000441500, 0xa, 0x4d5e1e0, 0xc000720500, 0x4d408c0, 0xc00065fcc0, 0x4d5e180, 0xc0006fe510, ...)
/home/wilken/Development/packer/command/build.go:290 +0x189
created by github.com/hashicorp/packer/command.(*BuildCommand).RunContext
/home/wilken/Development/packer/command/build.go:284 +0xd5a
FAIL github.com/hashicorp/packer/provisioner/shell 188.335s
FAIL
```
Test After change
```
--- PASS: TestShellProvisioner (212.39s)
--- PASS: TestShellProvisioner/testing_amazon-ebs_builder_against_shell_provisioner (212.39s)
PASS
```
2020-05-12 14:49:57 -04:00
Wilken Rivera
89fb7bb080
Apply suggestions from code review
...
Co-authored-by: Megan Marsh <megan@hashicorp.com>
2020-05-08 09:36:43 -04:00
Wilken Rivera
056f1f6e76
docs/amazon/builder: Add not about using a temporary_iam_instance_profile_policy_document
2020-05-08 09:32:54 -04:00
Wilken Rivera
bf1da57a05
Update address to localhost to be consistent with other proxies
2020-05-08 09:32:54 -04:00
Wilken Rivera
7cea7466ba
buider/amazon: Add `session_manager_port` option for setting a custom local port
2020-05-08 09:32:54 -04:00
Wilken Rivera
0d13c634b7
Update logging constructs for Session Manger driver
2020-05-08 09:32:49 -04:00
Wilken Rivera
81c40b8d08
Add section to docs about the session-manager-plugin tunnel
2020-05-08 09:32:49 -04:00
Wilken Rivera
5f68303504
Remove no longer needed port check
...
The communicator code base will default to the correct port settings for
valid communicators and fail the build for non valid communicators.
2020-05-08 09:32:49 -04:00
Wilken Rivera
3ae7ab994b
step_create_ssm_tunnel: Add port availability check for LocalPortNumber
2020-05-08 09:32:49 -04:00
Wilken Rivera
08dc2cb847
Remove call to unstubbed session start
2020-05-08 09:32:49 -04:00
Wilken Rivera
f498866c3a
Update validation for session_manager connectivity
...
Validation will now check that either a IamInstanceProfile or a TemporaryIamInstanceProfilePolicyDocument is set
2020-05-08 09:32:49 -04:00
Wilken Rivera
2f09b74587
amazon/builder: Move port validation for security group into RunConfig.Prepare
2020-05-08 09:32:48 -04:00
Wilken Rivera
743df19af2
Add tests for driver and ssm tunnel step
2020-05-08 09:32:48 -04:00
Wilken Rivera
e53d6aea66
amazon/ssm_driver: Update to support command context
...
* Defer the release of the found port to prevent possible Packer build collisions.
2020-05-08 09:32:48 -04:00
Wilken Rivera
5e14089851
tests/builder/amazon: Add basic testing for session_manager
...
* Add a test to ensure the proper host is returned when using session_manager
* Add a basic driver test for the validating that the SSMDriver will fail if the plugin is not in the path.
2020-05-08 09:32:48 -04:00
Wilken Rivera
60e0ba7e68
Update iam instance profile name
2020-05-08 09:32:48 -04:00
Wilken Rivera
e515aefee3
Add validation checks for session_manager
...
* Session manager connectivity only supported via SSH
* Session manager requires the use of an iam instance profile with system manager permissions
2020-05-08 09:32:48 -04:00
Wilken Rivera
c1d2477d18
builder/amzon: Update port configuration for WinRM
...
Connectivity for WinRM works for the initial connection, but fails to upload any provisioning scripts - need to dive in deeper.
For now connectivity over SSH works as expected.
2020-05-08 09:32:48 -04:00
Wilken Rivera
fbffbd1899
docs/builder/amazon: Add short blurb for connecting via the AWS session_manager interface
2020-05-08 09:32:48 -04:00
Wilken Rivera
520061dee6
builder/amazon: Update Session Manger connectivity
...
* Update security group creation step skip ingress rules if using session manager
* Update create ssm tunnel step to dynamically set a session port
* Add SSHPort function to common to return session-manager tunnel port
* Update SSHHost to return proper host for session-manager
2020-05-08 09:32:48 -04:00
Wilken Rivera
3dd46eb5f4
Add PoC of connectivity using session-manager-plugin
...
* Add a bunch of hard coded values for testing on port 8081; ssh configs
are set to localhost and 8081
* Add a base drive for communicating with the session manager plugin
* Update step for creating tunnel to actually create SSM session tunnel via driver
2020-05-08 09:32:48 -04:00
Wilken Rivera
16604373ac
initial ssm tunnel changes - not working
2020-05-08 09:32:48 -04:00
Megan Marsh
f0d2680426
remove spot_price_auto_product from docs ( #9173 )
2020-05-05 20:48:27 -04:00
Adrien Delorme
73242e8de4
make sure keyvalue and namevalue filters are using the same naming as the service being used
2020-04-16 17:22:13 +02:00
Adrien Delorme
840e67f775
HCL2: when we see a map generate an attribute spec instead of a block spec ( #9035 )
...
* mapstructure-to-hcl2: when we see a map generate an attribute spec and not a block spec
this will alow to do
tags = {
key = "value"
}
instead of
tags {
key = "value"
}
This will also enable using variables directly for those tags
* generate code
* update tests
2020-04-14 16:05:13 +02:00
Jeff Escalante
9165be87da
packer.io prefix removal, html extension remove for in-code errors
2020-04-07 17:53:22 -04:00
Jeff Escalante
4afd107eeb
patch source files for extensions changes
2020-04-07 17:50:51 -04:00
Megan Marsh
8ae6256c03
add test of NoEphemeral
2020-03-24 09:10:31 -07:00
Megan Marsh
fc36a37db8
only set NoDevice if NoEphemeral is set; otherwise, legit block device mappings get destroyed
2020-03-24 08:51:32 -07:00
Adrien Delorme
fab344a1fc
Update ami_config.go
...
quote string in err
2020-03-17 15:41:58 +01:00
Adrien Delorme
b5e8750f5f
Change key/value to name/value to remain consistent with Terraform
2020-03-17 11:23:11 +01:00
Adrien Delorme
3cae1a81ef
up tests
2020-03-16 17:54:52 +01:00
Adrien Delorme
d532bb376c
wip
2020-03-16 17:47:44 +01:00
Adrien Delorme
c845436e32
KeyValues.CopyOn: make sure a receiving nil map is set too
2020-03-16 15:46:08 +01:00
Adrien Delorme
e1c84806cc
rewrap
2020-03-16 14:55:03 +01:00
Adrien Delorme
fc837e3698
Update run_config.go
2020-03-16 12:36:20 +01:00
Adrien Delorme
ce8d3d3747
wip
2020-03-16 12:35:25 +01:00
Adrien Delorme
dab689ce2e
WIP
2020-03-16 12:19:34 +01:00
Adrien Delorme
dbb4981d66
WIP
2020-03-16 12:13:05 +01:00
Adrien Delorme
6e6490d688
WIP
2020-03-13 18:04:48 +01:00
Adrien Delorme
260dc59500
use the hcl2template.KVFilter where we can
2020-03-13 17:17:46 +01:00
Wilken Rivera
7b705545d9
docs: Various doc clean-ups to fix code block formatting and syntax highlighting ( #8868 )
2020-03-12 15:05:08 +01:00
Megan Marsh
4133acbdf3
update spot price docs
2020-03-09 08:46:30 -07:00
Wilken Rivera
e1a46ec293
Fix gosimple S1025 linting errors ( #8838 )
...
Remove unneeded use of fmt.Sprintf for variables that are already strings.
2020-03-04 15:31:30 -05:00
Megan Marsh
dde74232f2
Clearly document all template-engine-enabled options ( #8770 )
2020-02-20 11:05:27 +01:00
Wilken Rivera
9ec8b67392
Add golangci-lint to project ( #8686 )
...
* Add golangci-lint as linting tool
* Disable failing staticchecks to start; GitHub issue to handle coming soon
* Run `goimports -w` to repair all source files that have improperly
formatted imports
* makefile: Add ci-lint target to run on travis
This change adds a new make target for running golangci-lint on newly
added Go files only. This target is expected to run during Packer ci builds.
* .github/contributing: Add code linting instructions
* travis: Update job configuration to run parallel builds
2020-02-14 11:42:29 -05:00
Adrien Delorme
7d5f0c11af
add max_retries option to aws builders
2020-02-07 16:36:14 +01:00
Wilken Rivera
a1d9ba0e32
Merge pull request #8699 from fly1028/fix-instance-running-timeout
...
Instance Running waiter not aware of global waiter settings
2020-02-06 17:18:59 -05:00