31 Commits

Author SHA1 Message Date
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
Adrien Delorme
078ba7c8c3 commit old code generation tool
for history
2019-10-15 12:56:42 +02:00
Megan Marsh
a84fc6bde9 remove default ssh_username from oracle classic builder, but add note in docs. 2019-03-29 14:24:12 -07:00
Matthew Hooker
eb976894fc
cleanup 2018-10-27 02:04:36 -07:00
Matthew Hooker
6f729d0265
Adding some missing configuration 2018-10-26 16:59:22 -07:00
Matthew Hooker
2db0a03142
image upload WIP 2018-10-26 16:59:20 -07:00
Matthew Hooker
2febfa2c7d
attach volume after instance booted 2018-10-26 16:59:20 -07:00
Matthew Hooker
b68f214ca4
add boot volume to builder instance 2018-10-26 16:59:20 -07:00
Matthew Hooker
00ff187d77
master instance working 2018-10-26 16:59:19 -07:00
Matthew Hooker
e271e88b49
oracle-classic variable volume size WIP 2018-10-26 16:59:19 -07:00
Matthew Hooker
52f69cd91a
Validate image name. 2018-04-02 11:22:15 -07:00
Matthew Hooker
0533e1ad9c
Validate destination image name. 2018-03-30 13:01:52 -07:00
Josh Soref
7895051962 spelling: attribute 2018-03-13 07:12:16 +00:00
Megan Marsh
597ddc2192 add configurable snapshot timeout to oracle-classic builder 2018-02-22 14:01:53 -08:00
Megan Marsh
df45e0916d Add the winRM communicator to Oracle Classic builder.
update oracle classic docs with a minimal working windows example
2018-02-21 13:21:54 -08:00
Megan Marsh
7f631fcb77 unpack attributes in oracle-classic builder earlier so that we error fast if there's an issue 2018-02-08 14:12:39 -08:00
Megan Marsh
ad2e5f1f08 fail in oracle classic builder if user tries winrm since it doesn't work yet, and add attributes and attributes_file fields to oracle builder 2018-02-08 12:52:44 -08:00
Megan Marsh
66cd85828e rename dest_image_list_description to image_description 2018-01-31 12:48:40 -08:00
Megan Marsh
871ead371a Clean up based on Oracle comments 2018-01-31 10:47:19 -08:00
Megan Marsh
705459c260 add snapshotted machine image to image lists, then delete the snapshot. 2018-01-29 16:50:53 -08:00
Megan Marsh
565b660b19 comments 2018-01-26 14:28:27 -08:00
Megan Marsh
98857c42cf add tests; fix a couple issues caught by said tests 2018-01-26 14:27:31 -08:00
Matthew Hooker
c6b43ce6e9
remove errouneous double prep 2018-01-26 13:13:13 -08:00
Megan Marsh
b6d21ecd63 validate that required fields are present 2018-01-26 08:53:24 -08:00
Megan Marsh
25bc1da8fe remove unsused access config 2018-01-26 08:48:23 -08:00
Megan Marsh
7d23cfae0a
allow user to add a security list for SSH access; add cleanup for packer-generated rules and lists 2018-01-25 14:34:02 -08:00
Megan Marsh
f208a071a4
fix communicator 2018-01-25 14:34:01 -08:00
Megan Marsh
8b420944c5
debugs 2018-01-25 14:34:00 -08:00
Megan Marsh
46c3113613
it compiles :) 2018-01-25 14:34:00 -08:00
Matthew Hooker
3bf431a423
construct OCI client 2018-01-25 14:33:41 -08:00
Matthew Hooker
543caf3ec5
WIP OCI Classic builder 2018-01-25 14:33:41 -08:00