Commit Graph

40 Commits

Author SHA1 Message Date
Sylvia Moss dc31bad539
Sharing info with post-processors via artifact (#8632) 2020-01-30 11:27:58 +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
Lars Lehtonen 5edabfc849 post-processor/compress: fix dropped errors 2019-10-28 16:19:46 -07:00
Adrien Delorme 078ba7c8c3 commit old code generation tool
for history
2019-10-15 12:56:42 +02:00
Adrien Delorme aee73d745d update code after go mod update 2019-04-11 14:19:24 +02:00
Adrien Delorme a81abd297b Merge remote-tracking branch 'origin/master' into context_provisioner 2019-04-08 20:09:01 +02:00
Megan Marsh 1b77b05ce2 remove redundant keep_input_artifact from compress pp and clarify keep behavior in shell-local pp 2019-04-03 12:03:40 -07:00
Adrien Delorme e65115a7a0 contextualize post-processor 2019-04-03 15:55:55 +02:00
Megan Marsh 12fc1fa751 default_keep_input_artifact 2019-04-02 16:51:58 -07:00
Megan Marsh f4a360bea9 remove unused argument 2018-08-24 14:19:01 -07:00
Chris Lundquist ce1a5b7d7a Print why we are only using one core 2018-07-25 02:27:51 +00:00
Chris Lundquist 999a53ca76 add support for xz compression #6523 2018-07-24 19:46:21 +00:00
Sean Malloy 3622a669dc Add new post processor googlecompute-import 2018-06-26 21:39:55 -05:00
Matthew Hooker 81522dced0
move packer to hashicorp 2017-04-04 13:39:01 -07:00
Vasiliy Tolstov 6a5f6938ef post-processor/compress: add bgzf format support
* add bgzf compressor (it allows seek inside compressed file)
* add optional format config variable to specify archive format
* Update pgzip to get sse4 and avx optimizations.

Signed-off-by: Vasiliy Tolstov <v.tolstov@selfip.ru>
2016-05-13 11:51:00 +02:00
Chris Bednarski fbb24d4acf Changed interpolation logic so .BuildName can be used in the output config option 2015-08-04 19:49:41 -07:00
Chris Bednarski eba28519db Move vars to the top and cleanup extra whitespace 2015-06-24 18:29:32 -07:00
Chris Bednarski 1831a09055 Fix compress crash
- Changed config from pointer to value to fix crash
- Removed acceptance flag from compress tests since they would have
caught this
2015-06-24 17:47:00 -07:00
Mitchell Hashimoto 5241d8c6d6 post-processor/*: fix interpolation context 2015-06-22 12:24:55 -07:00
Chris Bednarski 7497db67b4 Tweaked some of the UI/UX around GOMAXPROCS 2015-06-18 14:22:26 -07:00
Chris Bednarski 0880d448f0 Cleanup some debug code and reorganize config struct 2015-06-18 14:01:00 -07:00
Chris Bednarski d8f78d9174 Cleanup 2015-06-18 04:41:05 -07:00
Chris Bednarski b767aa7f99 Change to compression_level, fix and add tests for format detection 2015-06-18 03:55:51 -07:00
Chris Bednarski 8fdb4f77e0 WIP 2/4 tests passing, still need to re-implement ZIP and bare compression files and do some cleanup 2015-06-18 00:47:33 -07:00
Chris Bednarski 2d6f8279e6 Restore configuration structure from vtolstov's branch 2015-06-16 19:08:22 -07:00
Chris Bednarski b2ad92f414 Merged changes from f-file-builder and master 2015-06-16 19:07:29 -07:00
Chris Bednarski 12cf6650a0 Revert compress post-processor to master to get baseline test 2015-06-16 12:10:28 -07:00
Chris Bednarski 53e4688529 Renamed some things to be more consistent with existing modules 2015-06-12 17:25:09 -07:00
Chris Bednarski e294db8ede Revert to original BuilderId 2015-06-10 14:04:24 -07:00
Chris Bednarski 42d749ab5f Light style and typo cleanup 2015-06-10 13:46:21 -07:00
Chris Bednarski c4fc365c65 Updated to reflect changes to template code 2015-06-10 13:33:50 -07:00
Chris Bednarski 52269b66b9 Added new compress post-processor, contributed by Vasiliy Tolstov 2015-06-10 12:30:18 -07:00
Mitchell Hashimoto dc1e67b6d2 post-processor/*: interpolation 2015-05-27 14:56:22 -07:00
Mitchell Hashimoto b2255751a1 post-processor/compress: style 2014-09-08 10:28:16 -07:00
John Bellone a492ca7424 Fix warnings about not utilizing test module.
Make these tests green adn them figure out how to test the actual post-processor.
2014-06-12 16:45:37 -04:00
John Bellone 7da7623d38 Fix user variables to properly evaluate. 2014-06-12 16:36:37 -04:00
John Bellone a4de58b5f6 [post-processor/compress] Add support for compress.
This commit adds support for a post-processor that produces a compressed
archive that can be uploaded to an OpenStack cluster through either
the Horizon web interface or Glance.
2014-06-12 16:36:37 -04:00
Mitchell Hashimoto a7c12fadc6 Remove the "compress" post-processor for now 2013-06-27 08:32:15 -07:00
Mitchell Hashimoto b98df11cbf fmt 2013-06-18 21:54:33 -07:00
Mitchell Hashimoto 0a90d3e791 post-processor/compress: Boilerplate for the compress PP 2013-06-18 21:18:41 -07:00