922 Commits

Author SHA1 Message Date
Sylvia Moss
99046c9178
Share build info with Provisioner and Post-Processor via HCL2 variables (#9444) 2020-06-29 13:44:57 +02:00
Adrien Delorme
c2975140cf
HCL2: allow to use keep_input_artifact in post processors (#9477)
* HCL2: allow to use keep_input_artifact in post processors
* add basic test
* add docs
2020-06-25 09:36:48 +02:00
Adrien Delorme
51d02f8c2d hcl2: inspect command 2020-06-23 11:58:57 +02:00
Megan Marsh
42e98f15ae make sure the no-op progress bar gets used for machine readable uis 2020-06-17 11:57:12 -07:00
Moss
daaeccd8b0 Skip consecutives post-processors 2020-06-09 17:35:53 +02:00
Moss
bfb9df0039 fix except flag for JSON and HCL2 2020-06-09 15:26:45 +02:00
Wilken Rivera
f672f5bd9b command/validate: Add support for HCL2 configuration files
* Update validate command to use FixConfig for checking against known
fixers
* Update validation command flag docs
* Add ConfigFixer method to PackerHandler Interface
* Implement ConfigFixer interface in PackerConfig
* Remove all stdout messaging (i.e calls to c.Ui.Say) in the validate
command. The command will only display hcl.Diagnotic messaging when there is an error or warning.

HCL2 Configs
```
⇶  packer validate docker_centos_shell_provisioner.pkr.hcl

```

JSON Configs
```
⇶  packer validate vmware-iso_ubuntu_minimal/vmware-iso_ubuntu_minimal.json
Error: Failed to prepare build: "vmware-iso"

1 error occurred:
        * Deprecated configuration key: 'iso_checksum_type'. Please call `packer fix`
against your template to update your template to be compatable with the current
version of Packer. Visit https://www.packer.io/docs/commands/fix/ for more
detail.

Warning: Fixable configuration found.
You may need to run `packer fix` to get your build to run correctly.
See debug log for more information.

  map[string]interface{}{
        "builders": []interface{}{
                map[string]interface{}{
                        ... // 3 identical entries
                        "guest_os_type":     string("ubuntu-64"),
                        "http_directory":    string("http"),
-                       "iso_checksum":
string("946a6077af6f5f95a51f82fdc44051c7aa19f9cfc5f737954845a6050543d7c2"),
+                       "iso_checksum":
string("sha256:946a6077af6f5f95a51f82fdc44051c7aa19f9cfc5f737954845a6050543d7c2"),
-                       "iso_checksum_type": string("sha256"),
                        "iso_url":
string("http://old-releases.ubuntu.com/releases/14.04.1/ubuntu-14.04.1-server-amd64.iso"),
                        "shutdown_command":  string("echo 'vagrant' | sudo -S shutdown -P now"),
                        ... // 4 identical entries
                },
        },
  }
```
2020-06-05 14:24:39 -04:00
Adrien Delorme
bac9c74447
packer console for HCL2 (#9359) 2020-06-05 17:23:54 +02:00
Adrien Delorme
3c5a1e5878 show build block name and source name if possible 2020-06-02 11:43:27 +02:00
Adrien Delorme
b4aa71aef2 Merge remote-tracking branch 'origin/master' into pr/AdrienneCohea/9245 2020-06-02 11:36:32 +02:00
Megan Marsh
45be673c0f move this to after the prepare() is successful so that we don't try to run builds that didn't prepare successfully. 2020-05-28 11:34:00 -07: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
Megan Marsh
3dc4ba2d68
Json vs HCL2 parity refactor (#9301)
* refactor so that json and hcl2 templates are both prepared in the same place in the build call, to make code easier to reason about. Remove overly verbose error output which isn't useful in vast majority of cases

* fix tests

* check err msg

* hcl2template.PackerConfig.GetBuilds: raise a diagnostic in case the packer core build perpare call errors

Co-authored-by: Adrien Delorme <adrien.delorme@icloud.com>
2020-05-28 10:43:58 +02:00
Megan Marsh
1c214628ed
Merge pull request #9234 from hashicorp/hcl_force_and_debug
enable force, debug, and on-error for hcl2 builds
2020-05-19 16:02:06 -07:00
Sylvia Moss
1c30a71d09
Replace file shared state by statebag (#9238) 2020-05-19 11:49:48 +02:00
Adrienne Cohea
6aea8ead6a
Support named builds in HCL2 templates. 2020-05-17 22:13:35 -07:00
Megan Marsh
ee5635722b enable force, debug, and on-error for hcl2 builds 2020-05-14 16:22:51 -07:00
Adrien Delorme
52b2151b21 go generate ./packer 2020-05-12 16:19:26 +02:00
Adrien Delorme
d147ebe79f packer/new_stuff.go => packer/run_interfaces.go 2020-05-12 12:31:05 +02:00
Adrien Delorme
d34cecc668 Update new_stuff.go 2020-05-12 12:29:31 +02:00
Adrien Delorme
ec083083ce Update new_stuff.go 2020-05-08 16:59:19 +02:00
Adrien Delorme
7e45a1e950 fix enum 2020-05-08 16:54:44 +02:00
Adrien Delorme
42a05e1e80 more refactoring 2020-05-08 16:41:47 +02:00
Adrien Delorme
e50eb341bf Update core_test.go 2020-04-30 16:40:58 +02:00
Adrien Delorme
c71a792186 simplify/refactor core for build & validate 2020-04-30 16:36:01 +02:00
Sylvia Moss
553b1fb9f8
Add RetriedProvisioner to allow retry provisioners (#9061) 2020-04-16 11:58:54 +02:00
Megan Marsh
890d7b2ec4
Merge pull request #8875 from hashicorp/fix_8812
Fix user var recursion with env vars
2020-03-13 12:52:17 -07:00
Megan Marsh
32595f71cf sort interpolation input to make the interpolation deterministic 2020-03-12 13:40:56 -07:00
Megan Marsh
17f59c4ddc fix regex and actually test the check function 2020-03-12 10:00:56 -07:00
Megan Marsh
ad5495ac8f
Update packer/core.go
Co-Authored-By: Adrien Delorme <azr@users.noreply.github.com>
2020-03-12 09:50:02 -07:00
Megan Marsh
051155270f add test for fixed behavior 2020-03-11 12:48:35 -07:00
Megan Marsh
52f03de0f0 adding tests 2020-03-11 10:49:45 -07:00
Megan Marsh
063dd5c133 fix interpolation when env vars interpolate before user vars 2020-03-11 09:55:40 -07:00
Wilken Rivera
b9f1b3c8d4
Fix gosimple S1005 linting issue (#8870)
Results before change
```
⇶  golangci-lint run ./... --disable-all --enable=gosimple | grep 1005
fix/fixer_comm_config.go:48:4: S1005: should write `sshHostPortMinRaw := builders["ssh_host_port_min"]` instead of `sshHostPortMinRaw, _ := builders["ssh_host_port_min"]` (gosimple)
fix/fixer_comm_config.go:64:4: S1005: should write `sshHostPortMaxRaw := builders["ssh_host_port_max"]` instead of `sshHostPortMaxRaw, _ := builders["ssh_host_port_max"]` (gosimple)
fix/fixer_comm_config.go:81:4: S1005: should write `sshSkipNatMappingRaw := builders["ssh_skip_nat_mapping"]` instead of `sshSkipNatMappingRaw, _ := builders["ssh_skip_nat_mapping"]` (gosimple)
packer/artifact_mock.go:47:2: S1005: should write `value := a.StateValues[name]` instead of `value, _ := a.StateValues[name]` (gosimple)
packer/artifact_test.go:31:2: S1005: should write `value := a.state[name]` instead of `value, _ := a.state[name]` (gosimple)
```

Results after change
```
```
2020-03-11 10:30:08 +01:00
Sylvia Moss
2981fd627d
Avoid calling CoreBuild.Prepare(...) for HCL2 templates (#8742) 2020-02-14 17:39:32 +01:00
Sylvia Moss
23fa3107a3
Render variables one time on prepare method (#8727) 2020-02-13 17:35:23 +01:00
Megan Marsh
00dfb79c88
Merge pull request #7627 from hashicorp/inplace_isos
Inplace isos
2020-02-11 11:19:10 -08:00
Wilken Rivera
a684fae28f mapstructure-to-hcl2: Update code formatter to use golang/x/tools/imports 2020-02-07 14:15:43 -05:00
Adrien Delorme
a19214afeb Allow to use isos in place 2020-02-06 17:07:58 +01:00
Megan Marsh
6a07d76416
Merge pull request #8654 from hashicorp/fix_8583
Extract http ip discover to a new step
2020-01-28 08:50:48 -08:00
Sylvia Moss
328eb8ee96
Interpolate boot_command when defined by user variable (#8640) 2020-01-27 19:10:16 +01:00
Moss
0566f1f999 Extract http ip discover to a new step 2020-01-27 17:06:56 +01:00
Megan Marsh
76fa85fd93
Merge pull request #8613 from hashicorp/add_pp_names
log name of postprocessor running to disambiguate long chains of pps
2020-01-16 13:12:02 -08:00
Adrien Delorme
c905418d4e Avoid field confusion be naming fields in packer/build_test.go 2020-01-16 16:24:33 +01:00
Adrien Delorme
2d1a67c6cb hcl2: allow to optionnaly name provisioners and post-processors 2020-01-16 12:08:39 +01:00
Sylvia Moss
0677b02e18
Share SourceImageName with provisioners and manifest post-processor (#8603) 2020-01-16 12:04:03 +01:00
Megan Marsh
b5075a35c0 fix tests 2020-01-15 15:36:52 -08:00
Megan Marsh
e228a5bcb9 log name of postprocessor running to disambiguate long chains of pps 2020-01-15 14:47:56 -08:00
Adrien Delorme
731904d3d2 mapstructure-to-hcl2: use accessor for named types and not named type + go genrate + tests 2020-01-07 11:44:22 +01:00
Caleb Lemoine
9f6eb0ef65 fix: mispelled variables names in packer/build.go (#8568) 2020-01-06 14:02:29 +01:00