Commit Graph

449 Commits

Author SHA1 Message Date
Adrien Delorme 193dad46e6
Hcl2 input variables, local variables and functions (#8588)
Mainly redefine or reused what Terraform did.

* allow to used `variables`, `variable` and `local` blocks
* import the following functions and their docs from Terraform: abs, abspath, basename, base64decode, base64encode, bcrypt, can, ceil, chomp, chunklist, cidrhost, cidrnetmask, cidrsubnet, cidrsubnets, coalesce, coalescelist, compact, concat, contains, convert, csvdecode, dirname, distinct, element, file, fileexists, fileset, flatten, floor, format, formatdate, formatlist, indent, index, join, jsondecode, jsonencode, keys, length, log, lookup, lower, max, md5, merge, min, parseint, pathexpand, pow, range, reverse, rsadecrypt, setintersection, setproduct, setunion, sha1, sha256, sha512, signum, slice, sort, split, strrev, substr, timestamp, timeadd, title, trim, trimprefix, trimspace, trimsuffix, try, upper, urlencode, uuidv4, uuidv5, values, yamldecode, yamlencode, zipmap.
2020-02-06 11:49:21 +01:00
Megan Marsh 073eda76aa remove extraneous files from when vsphere builder was a plugin, and move README into packer website as separated docs for vsphere-clone and vsphere-iso. Move option descriptions into struct code, and generate documentation directly from those structs as we do inside of the other builders 2020-01-07 16:59:31 -08:00
Megan Marsh 5bacd37014 fix pps 2019-12-17 16:13:21 -08:00
Megan Marsh dca2c03cdb
Merge pull request #7866 from hashicorp/sharing_info
Add new struct to Provision() method signature, allowing us to share connection and credential info generated at build time with provisioners.
2019-12-17 14:55:20 -08:00
nywilken 3d56f8ac80 command/build: Fix URL to HCL2 syntax guide
* small typo fixes
2019-12-17 15:36:04 -05:00
Adrien Delorme 4b7132c87c Merge remote-tracking branch 'origin/master' into sharing_info 2019-12-17 11:57:09 +01:00
Adrien Delorme 0785c2f6fc
build using HCL2 (#8423)
This follows #8232 which added the code to generate the code required to parse
HCL files for each packer component.

All old config files of packer will keep on working the same. Packer takes one
argument. When a directory is passed, all files in the folder with a name
ending with  “.pkr.hcl” or “.pkr.json” will be parsed using the HCL2 format.
When a file ending with “.pkr.hcl” or “.pkr.json” is passed it will be parsed
using the HCL2 format. For every other case; the old packer style will be used.

## 1. the hcl2template pkg can create a packer.Build from a set of HCL (v2) files

I had to make the packer.coreBuild (which is our one and only packer.Build ) a public struct with public fields

## 2. Components interfaces get a new ConfigSpec Method to read a file from an HCL file.

  This is a breaking change for packer plugins.

a packer component can be a: builder/provisioner/post-processor

each component interface now gets a `ConfigSpec() hcldec.ObjectSpec`
which allows packer to tell what is the layout of the hcl2 config meant
to configure that specific component.

This ObjectSpec is sent through the wire (RPC) and a cty.Value is now
sent through the already existing configuration entrypoints:

 Provisioner.Prepare(raws ...interface{}) error
 Builder.Prepare(raws ...interface{}) ([]string, error)
 PostProcessor.Configure(raws ...interface{}) error

close #1768


Example hcl files:

```hcl
// file amazon-ebs-kms-key/run.pkr.hcl
build {
    sources = [
        "source.amazon-ebs.first",
    ]

    provisioner "shell" {
        inline = [
            "sleep 5"
        ]
    }

    post-processor "shell-local" {
        inline = [
            "sleep 5"
        ]
    }
}

// amazon-ebs-kms-key/source.pkr.hcl

source "amazon-ebs" "first" {

    ami_name = "hcl2-test"
    region = "us-east-1"
    instance_type = "t2.micro"

    kms_key_id = "c729958f-c6ba-44cd-ab39-35ab68ce0a6c"
    encrypt_boot = true
    source_ami_filter {
        filters {
          virtualization-type = "hvm"
          name =  "amzn-ami-hvm-????.??.?.????????-x86_64-gp2"
          root-device-type = "ebs"
        }
        most_recent = true
        owners = ["amazon"]
    }
    launch_block_device_mappings {
        device_name = "/dev/xvda"
        volume_size = 20
        volume_type = "gp2"
        delete_on_termination = "true"
    }
    launch_block_device_mappings {
        device_name = "/dev/xvdf"
        volume_size = 500
        volume_type = "gp2"
        delete_on_termination = true
        encrypted = true
    }

    ami_regions = ["eu-central-1"]
    run_tags {
        Name = "packer-solr-something"
        stack-name = "DevOps Tools"
    }
    
    communicator = "ssh"
    ssh_pty = true
    ssh_username = "ec2-user"
    associate_public_ip_address = true
}
```
2019-12-17 11:25:56 +01:00
Megan Marsh 0f6d1beccf add an extra string array to the Prepare() return values in the builder interfaces; this sets up the ability for builders to give the provisioners custom user-accessible build-time variables. 2019-12-16 21:23:05 -08:00
Moss a0329ef196 Simplify testing template 2019-12-10 18:59:56 +01:00
Moss 7466c4fdca Return exit code 1 when builder type is not found 2019-12-10 18:55:18 +01:00
mingsheng.su 2c513fce64 update ucloud packer 2019-10-29 16:11:43 -07:00
mingsheng.su 61f9d3a9fe add ucloud import 2019-10-29 16:11:43 -07:00
Paul Meyer 7297d74c98 Add azure-chroot builder plugin 2019-10-15 21:13:37 +00:00
Megan Marsh 59efa0faee rename option to error-cleanup-privisoner, which I think is clearer 2019-09-25 13:43:29 -07:00
Megan Marsh 0683bc409b add test for error-cleanup provisioner, and fix tests by fixing null builder to use an actual none communicator instead of skipping communicator generation altogether 2019-09-25 13:39:09 -07:00
Megan Marsh 6688f436dd
Merge pull request #7960 from guidodobboletta/master
Fix console help text
2019-08-12 16:32:29 -07:00
xiaohan.liang f4fc9dd09a Rewrite all files, remove sensitive information 2019-08-09 15:00:23 +08:00
Guido Dobboletta e79d62d006 Fix text 2019-08-08 13:22:59 -05:00
Thomas Meckel d3202497ae First working version of virtualbox/vm builder 2019-07-26 12:29:44 +02:00
Thomas Meckel 2a531f8ad6 Merged changes from local branch 2019-07-26 12:29:44 +02:00
Brendan Devenney 2b16b5cae4
Move fixer test to fix package
Signed-off-by: Brendan Devenney <brendan.devenney@form3.tech>
2019-07-24 18:04:17 +01:00
Brendan Devenney 6520814a6c
Ensure help output is consistently formatted
Signed-off-by: Brendan Devenney <brendan.devenney@form3.tech>
2019-07-24 17:41:57 +01:00
Brendan Devenney 75d8d7fce5
Update and futureproof fix command usage
* Dynamically generate the fixer documentation (in order) from
FixerOrder
* Update fixers which used linebreaks in their Synopsis

Signed-off-by: Brendan Devenney <brendan.devenney@form3.tech>
2019-07-24 17:18:07 +01:00
Brendan Devenney 91b7d8c572
Add test to ensure all fixers are enabled
Signed-off-by: Brendan Devenney <brendan.devenney@form3.tech>
2019-07-24 16:52:07 +01:00
Brendan Devenney 9f0bc29db5
Test that Fixers and FixerOrder are equal length
Signed-off-by: Brendan Devenney <brendan.devenney@form3.tech>
2019-07-24 16:51:39 +01:00
Marin Salinas 80dadaf3f1 feature: add bsuvolume builder and acceptance test 2019-07-18 09:39:08 -07:00
Marin Salinas 0c47ee55e6 feature: add chroot builder structure 2019-07-18 09:39:07 -07:00
Marin Salinas c4e69d3169 wip: add bsu plugin acc testing 2019-07-18 09:39:07 -07:00
Marin Salinas 1281f28f6d add prevalidate step 2019-07-18 09:39:07 -07:00
Marc Falzon 00c2df24df Add Exoscale Import post-processor
This change adds a new `exoscale-import` post-processor allowing users
to create Private Templates on Exoscale.
2019-07-01 08:40:26 +02:00
mingsheng.su 6109ad79a3
Merge branch 'master' into feature/ucloud_builder 2019-06-26 10:09:28 +08:00
Adrien Delorme 5efab58ed8 allow to have timestamped colorless ui messages 2019-06-19 15:04:13 +02:00
mingsheng.su d1b9ad90c8 Merge remote-tracking branch 'origin' into feature/ucloud_builder 2019-06-18 18:17:19 +08:00
mingsheng.su c8bab9b382 add ucloud packer 2019-06-13 15:16:49 +08:00
Megan Marsh f7bf80724c document what a REPL is 2019-06-10 11:39:42 -07:00
Megan Marsh 53a5e90d78
Update command/console.go
Co-Authored-By: Adrien Delorme <azr@users.noreply.github.com>
2019-06-10 11:38:29 -07:00
Megan Marsh 7cce3157a8
Update command/console.go
Co-Authored-By: Adrien Delorme <azr@users.noreply.github.com>
2019-06-10 11:38:14 -07:00
Megan Marsh 668e92f2ca add docs and the option to list variables from inside the console 2019-06-06 14:26:12 -07:00
Megan Marsh df916e805e borrow wrappedreadline workarounds from terraform and implement a similar check for piped commands; this makes the cli experience much cleaner 2019-06-06 13:26:07 -07:00
Megan Marsh b8ac1a800d implement a packer console analogous to the terraform console 2019-06-05 16:35:22 -07:00
Adrien Delorme cb2d89af6f simplify path parsing by making at string instead of an array + add tests 2019-05-07 11:51:21 +02:00
Adrien Delorme a4b8570991 refactor arg parsing into it's own cfg maker & test it 2019-05-07 11:43:18 +02:00
Adrien Delorme 7e8c42d243 BuildCommand: put config in a local struct 2019-05-07 11:15:35 +02:00
Adrien Delorme cdbb742496 add more cancellation tests 2019-05-06 16:29:35 +02:00
Adrien Delorme 73a55631c4 fix testfile call 2019-05-06 15:47:53 +02:00
Adrien Delorme 2890687b2b fix race condition in BuildCommand
a map[string]error was being written on unprotectedly
2019-05-06 15:42:23 +02:00
Adrien Delorme af15ed3583 nil signals are probably just a cancellation in disguise 2019-05-06 15:29:59 +02:00
Adrien Delorme 583d93790f add tests for cancellation while building 2019-05-06 15:07:57 +02:00
Adrien Delorme dd2785ff08 BuildCommand.Run: avoid triggering a cancellation on termination 2019-05-06 12:26:22 +02:00
Adrien Delorme 0094d2878c Build: move BuildCommand.Run into a RunContext command to allow testing for cancellation, put cancellation in `Run` 2019-05-06 12:19:59 +02:00
Adrien Delorme a2cc2532ea add TestBuildParallel_Timeout to test errors on parallel builds 2019-05-03 09:02:56 +02:00
Adrien Delorme d40d3eca88 swap semaquire and wg.Add to avoid a deadlock 2019-05-03 08:19:33 +02:00
Adrien Delorme 263f318e82 be true to docs 2019-05-02 17:48:34 +02:00
Adrien Delorme 1dca416f87 move the semacquire to the main build loop so that the build order is kept
* a goroutine could start before another !
2019-05-02 16:58:28 +02:00
Adrien Delorme 852af993e6 BuildParallel: test with 3 parallel builds 2019-05-02 16:24:28 +02:00
Adrien Delorme 9281fada2d prevent a breaking change so that we can merge the `-parallel-builds` option first. 2019-05-02 16:24:28 +02:00
Adrien Delorme 14486003a1 fix test to be race free 2019-05-02 15:04:02 +02:00
Adrien Delorme c1527d9b47 fix text 2019-05-02 14:41:44 +02:00
Adrien Delorme ae71a81c1e Merge remote-tracking branch 'origin/master' into pr/7501 2019-05-02 11:47:43 +02:00
Brett Wandel aaf56ffd26 added: testing 2019-05-02 08:38:56 +10:00
Brett Wandel 76b5c1995f fixed: small changes to cancellation on ctrl-c 2019-04-19 17:10:36 +10:00
Marques Johansson 99987c2d56 Add Linode Images builder
Packer Builder for [Linode Images](https://www.linode.com/docs/platform/disk-images/linode-images/)

Adds the following builder:

  * `linode`

Based on https://github.com/linode/packer-builder-linode (MPL/2)
(formerly maintained by @dradtke).  Includes website docs and tests.

Relates to #174, #3131
2019-04-15 20:40:59 -04:00
Adrien Delorme 97f2914c6a
Merge pull request #7484 from yandex-cloud/yandex-cloud-builder
Builder for Yandex.Cloud
2019-04-15 14:02:43 +02:00
Brett Wandel 92e75f838a added the ability to limit number of builds running in parallel 2019-04-13 22:31:54 +10:00
Adrien Delorme d2f036ec44 Revert "Revert "Merge pull request #7391 from carlpett/proxmox-builder""
This reverts commit 032527ecfe.
2019-04-12 12:26:34 +02:00
Gennady Lipenkov 8f53ca5e5e Add 'yandex' plugin as Builder 2019-04-12 01:00:54 +03:00
Adrien Delorme 032527ecfe Revert "Merge pull request #7391 from carlpett/proxmox-builder"
This reverts commit b7d62b2ae0, reversing
changes made to c36eaf16f7.
2019-04-11 14:19:25 +02:00
Adrien Delorme 0b4ada9690 make sleep provisioner available to packer 2019-04-08 20:09:22 +02:00
Adrien Delorme d7b1b597a7 test provisionning timeout 2019-04-08 20:09:21 +02:00
Adrien Delorme a81abd297b Merge remote-tracking branch 'origin/master' into context_provisioner 2019-04-08 20:09:01 +02:00
Calle Pettersson 9f8fc37fde Implement Proxmox builder 2019-04-04 15:20:46 -07:00
Megan Marsh 217a93fc30 fix build_test.go on windows. This code needs to not be run in parallel, or else there can be race conditions with the post-processors all trying to access the same file at once. Additionally, I changed the test template itself so that it is valid code on either bash or cmd. Finally, I found and fixed a small bug in naming the file extensions in shell local inline scripts. 2019-04-04 14:57:56 -07:00
Adrien Delorme a4bf94dd3c change Builder to be passed a context for cancellation
we have to to give it to our hook
2019-04-03 15:55:55 +02:00
Adrien Delorme 045f2f41bd display received signal in debug mode 2019-03-22 14:25:06 +01:00
Adrien Delorme 9f82b75e57 Use the hashicorp/go-getter to download files
* removed packer.Cache and references since packer.Cache is never used except in the download step. The download step now uses the new func packer.CachePath(targetPath) for this, the behavior is the same.
* removed download code from packer that was reimplemented into the go-getter library: progress bar, http download restart, checksuming from file, skip already downloaded files, symlinking, make a download cancellable by context.
* on windows if packer is running without symlinking rights and we are getting a local file, the file will be copied instead to avoid errors.
* added unit tests for step_download that are now CI tested on windows, mac & linux.
* files are now downloaded under cache dir `sha1(filename + "?checksum=" + checksum) + file_extension`
* since the output dir is based on the source url and the checksum, when the checksum fails, the file is auto deleted.
* a download file is protected and locked by a file lock,
* updated docs
* updated go modules and vendors
2019-03-13 12:11:58 +01:00
Andrew Widdersheim a5b753820c
Fix build commands -except help message
The `-except` option needed some updates that were missed in 270f851e.
2019-03-05 10:54:35 -05:00
Megan Marsh b8510f35fc
Merge pull request #7330 from hashicorp/except_post_processor_tests
name a post-processor to it's type when it is not named
2019-02-26 09:26:17 -08:00
Miłosz Smółka 94a7a07c87 Merge branch 'master' into hyperone 2019-02-24 15:16:21 +01:00
Adrien Delorme 7e2d86731e tests: add a post-processor that creates an unnamed.txt file 2019-02-20 11:03:17 +01:00
Adrien Delorme de336ef15e TestBuildOnlyFileMultipleFlags: check that tomato.txt is not created 2019-02-19 16:40:42 +01:00
Adrien Delorme b04b8b3857 test building with `-except=""` 2019-02-19 15:25:41 +01:00
Megan Marsh 75f574bd4b
Merge pull request #7221 from hashicorp/vagrant_builder
Vagrant builder
2019-02-15 10:05:44 -08:00
Megan Marsh be21850e32
Merge pull request #7060 from andrewsomething/do-post-processor
Add digitalocean-import post-processor.
2019-02-14 11:58:00 -08:00
xinau c207451f7e Merge branch 'master' of https://github.com/hashicorp/packer into packer-provisioner-inspec 2019-02-12 05:32:05 +00:00
Miłosz Smółka 228829139b Merge branch 'master' into hyperone 2019-02-07 14:12:13 +01:00
Megan Marsh ad21367b21 vagrant builder 2019-02-04 14:08:43 -08:00
Adrien Delorme 8621949e01 make generate 2019-02-04 15:16:38 +01:00
Adrien Delorme dd3e2c255c respect a 'only' defined in a post-processor 2019-02-01 15:50:06 +01:00
Adrien Delorme 074a74ec38 make sure 'only' completely ignores post-processor
before this commit, if one would put a 'only' inside the post-processor definition, the post process could be skipped
2019-02-01 15:21:41 +01:00
Miłosz Smółka be30415395 Add HyperOne builder 2019-01-23 14:04:05 +01:00
xinau f5b13e3cb5 added inspec.io provisioner 2019-01-20 15:43:47 +00:00
Adrien Delorme 58245f2557 break a chain of post-processors when one is skipped & make `-only`
"blind" to post-processors

* to avoid trouble
* other arrays of post processors might still be there !
* add docs
* update tests
2019-01-11 14:08:30 +01:00
Adrien Delorme 61ade0e127 allow to use --only with post-processors 2019-01-10 15:44:34 +01:00
Adrien Delorme 4bf3cd44fc allow to skip a post processor 2019-01-10 15:44:34 +01:00
Adrien Delorme 905db043c4 command.TestBuildOnlyFileCommaFlags: create some files using post processors 2019-01-10 15:44:02 +01:00
Adrien Delorme 7655d2efb2
Add tencent cloud builder (#7135 & #6839) 2018-12-20 17:09:44 +01:00
Megan Marsh 98e933ca54 make packer inspect not print sensitive variables. 2018-12-07 12:02:20 -08:00
Andrew Starr-Bochicchio c0c5c6afac Add DigitalOcean post-processor. 2018-11-29 21:00:57 -05:00
Megan Marsh ba25e68fe0 add a new breakpoint provisioner 2018-11-29 14:32:52 -08:00
Megan Marsh c5b6eff691
Merge pull request #6871 from LKaemmerling/master
Add hcloud builder
2018-10-18 11:13:16 -07:00