Commit Graph

105 Commits

Author SHA1 Message Date
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
Megan Marsh 84063d2132 implement ID and Type values in the provisioner template info sharing 2019-12-13 11:57:01 -08:00
Adrien Delorme 078ba7c8c3 commit old code generation tool
for history
2019-10-15 12:56:42 +02:00
Adrien Delorme 55f1c734d0 fix alicloud docs a little 2019-09-20 15:10:02 +02:00
Adrien Delorme 3fe9d52e3f Merge remote-tracking branch 'origin/master' into scrape_doc_to_builder_struct_config 2019-09-20 11:15:44 +02:00
Adrien Delorme 7d9798f5ee update AlicloudAccessConfig docs for SECURITY_TOKEN
SecurityToken=>SECURITY_TOKEN
2019-08-29 14:39:25 +02:00
Adrien Delorme 2efc94521b use trilean initializers in test where missing 2019-08-23 11:17:45 +02:00
Megan Marsh f7c8321a7e convert alicloud s.IOOptimized into trilean in code 2019-08-22 13:59:38 -07:00
Megan Marsh ecaec1ac58 swap out alicloud encryption *bools for trileans 2019-08-22 13:52:29 -07:00
Megan Marsh 3c3f7f26ce implement custom data type "trilean" (tri-state-boolean) to track booleans which have a "null" or "unset" state. Previously we used *bool for these template options, but it turns out that those won't work because "unset" will evaluate to "false" if a user is using template variables to set the option that maps to a *bool. 2019-08-22 13:18:15 -07:00
Adrien Delorme 4cb7c30987 Merge remote-tracking branch 'origin/master' into scrape_doc_to_builder_struct_config 2019-08-21 16:44:23 +02:00
Christian Muehlhaeuser 216afbaa8b
Fixed various typos
Just a bunch of nit-picky typo fixes.
2019-07-25 06:49:51 +02:00
Adrien Delorme 7a60990825 alicloud: use partials 2019-06-14 15:56:05 +02:00
Adrien Delorme daa9f9d34e Merge remote-tracking branch 'origin/master' into scrape_doc_to_builder_struct_config 2019-06-14 15:17:56 +02:00
Adrien Delorme cfda61b81f
Merge pull request #7747 from chhaj5236/bugfix/refine_io_optimize
let product API determine the default value of io_optimized
2019-06-14 11:58:03 +02:00
bozhi.ch b3277698f6 let product API determine the default value of io_optimized 2019-06-14 11:49:42 +08:00
bozhi.ch 6a5db1e948 cleanup image and snapshot if target image is still not available after timeout 2019-06-13 11:17:39 +08:00
Adrien Delorme 6e3dc1aa9a Merge remote-tracking branch 'origin/master' into scrape_doc_to_builder_struct_config 2019-06-12 14:28:11 +02:00
bozhi.ch 45249fc764 fix describing snapshots issue when image_ignore_data_disks is provided 2019-06-11 15:22:06 +08:00
Adrien Delorme 4bf6a56d71 split communitacor.SSH & communitacor.WinRM to facilitate documentation
put doc for communicator into the struct
2019-06-06 16:55:24 +02:00
Adrien Delorme 4399684372 make fmt autogenerated docs 2019-06-06 16:29:25 +02:00
Adrien Delorme e6cbb013ba add // go:generate struct-markdown to all previously edited files 2019-06-05 16:42:18 +02:00
Adrien Delorme f1917edd34 generate the comments for config struct of builders scraping doc website 2019-06-05 16:42:17 +02:00
wb-ywq399345 0da7b918ce support encryption with default service key 2019-04-26 15:12:07 +08:00
chhaj5236 6b081cc41c
update alicloud builder to use official SDK (#7477) 2019-04-26 10:37:49 +08:00
Adrien Delorme c4f3dccc14 rename interpolation context from ctx to ictx and contexts to ctx to avoid conflicts 2019-04-03 15:56:15 +02: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
programmer04 596a9cc7ff Improve error message for AWS and Alibaba 2019-03-15 23:38:05 +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
wb-ywq399345 035b9e5cda fix 'Acceptance Tests can't find image problem' 2019-03-05 16:14:59 +08:00
bozhi.ch 0174a502eb support -force option and update docs 2018-12-05 11:50:35 +08:00
bozhi.ch a485bcfdf3 delete copied image and snapshots if corresponding options are specified 2018-11-28 21:34:21 +08:00
bozhi.ch 7704ff2f24 apply tags to relevant snapshots 2018-11-26 16:58:32 +08:00
bozhi.ch 3c1395eb04 support wait_snapshot_ready_timeout for much bigger disk 2018-11-25 16:05:26 +08:00
bozhi.ch 3c2c13a021 support creating image without data disks 2018-11-19 15:25:12 +08:00
Mikhail Ushanov 536252683e builders: reuse private key file reading function
Signed-off-by: Mikhail Ushanov <gm.mephisto@gmail.com>
2018-11-08 14:25:50 +03:00
bozhi.ch c3a60ad0ce add options for system disk properties 2018-10-30 21:09:59 +08:00
Matthew Hooker 9181570bc3
remove stray struct dumps in logs 2018-09-27 00:14:05 -07:00
zhuzhih2017 676b28ecc5
Merge pull request #6764 from chhaj5236/feature/support_disable_stop_instance
support disable_stop_instance option for some specific scenarios
2018-09-27 14:52:07 +08:00
bozhi.ch bb19cdeb55 support disable_stop_instance option for some specific scenarios 2018-09-25 22:02:05 +08:00
bozhi.ch 1f3a517a19 fix type error in step_create_tags 2018-09-25 20:20:10 +08:00
zhuzhih2017 9e3e2e83ae
Merge pull request #6720 from chhaj5236/fix/attach_keypair
fix attaching keypair error due to missing keypair name
2018-09-19 14:14:55 +08:00
bozhi.ch 3c312eb2a0 change b.config to pointer 2018-09-18 21:40:57 +08:00
chhaj5236 43e091de15
Merge branch 'master' into feature/support_tags 2018-09-17 16:50:44 +08:00
zhuzhih2017 31bbe2983b
Merge pull request #6688 from chhaj5236/feature/support_ssh_private_ip
support ssh with private ip address
2018-09-17 16:46:38 +08:00
bozhi.ch b3aae89a53 fix attaching keypair error due to missing keypair name 2018-09-16 18:19:00 +08:00
bozhi.ch b8a3e3b8f4 support adding tags to image 2018-09-16 18:16:13 +08:00
Megan Marsh 38cc525ec7 new option allowing user to clean up the ephemeral ssh key from the authorized_keys file 2018-09-14 11:06:38 -07:00