Commit Graph

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