Commit Graph

43 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
Adrien Delorme 766e5c77ef builder.vmware.vmx: remove duplicate RemoteType field. 2019-10-15 12:56:42 +02:00
Adrien Delorme 5517d41468 make sure all documentation fields are there
* add missing `temporary_key_pair_name` field for alicloud
* add missing description to `vpc_filter` for aws
* add missing ssh communicator fields for aws
* add links for aws
* update vmware-vmx docs
* manually describe AMI Configuration section for ebsvolume
* display missing required ami_name field for aws
* add missing fields for docker
* add missing fields for openstack
2019-08-26 17:16:54 +02:00
Adrien Delorme 926c8bbaa6 refactor ShutdownConfig into a single struct 2019-06-14 12:17:28 +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
aaronk1 4ffa1779f1
Correct typo in var name 2019-05-10 18:49:42 -04:00
Megan Marsh 0058422a5c also for vmx 2018-12-05 15:58:44 -08:00
Megan Marsh 536e0501ac Validate username/password for ovftool during prepare.
Add template option skip_validate_credentials allowing users to skip this validation if they don't want it.
Refactor vmware-iso builder to separate out config so that it matches the vmware-vmx builder and simplifies the builder.go file
2018-11-12 13:21:25 -08:00
Megan Marsh c3144c2d0a add some missing template validation (copied from iso builder) and revert to current use of displayName for parsing vm ssh IP; using VMName was breaking chained builds that hadn't updated the display name from the previous build. 2018-11-02 14:22:01 -07:00
Megan Marsh f18bb19f96 remove redundant config; CommConfig was already a part of the SSSHConfig struct 2018-11-02 14:22:01 -07:00
Alexander Laamanen 3193f50f17 Support export with the vmx builder. 2018-10-25 13:02:37 -07:00
Alexander Laamanen 5e74bcfb88 Fix tests, move remote_ default values to driver_config. 2018-10-25 12:30:57 -07:00
Alexander Laamanen 7b5943160b Re-enable the CommHost() call. Use common's driver factory. 2018-10-25 11:17:09 -07:00
Alexander Laamanen 91c7089455 Implement the first version of the remote Clone(). 2018-10-25 10:37:45 -07:00
Conrad Jones d05a601d00 Add support to vmware-vmx builder for linked clones. 2018-06-17 01:38:42 +01:00
Matthew Hooker c6299972b9
s/boot_command/bootcommand/ 2018-04-19 14:26:31 -07:00
Matthew Hooker 408eba88ad
flatten boot command config and implement for vmware 2018-04-19 14:26:30 -07:00
Matthew Hooker 106408f6be
add new disable_vnc option 2017-10-12 16:34:40 -07:00
Matthias Merdes c8d09b5152 Fix timestamp interpolation in created file name
This commit attempts to fix the timestamp-related part of #4885 by using the logic found in the analogous virtualbox implementation. In essence, it applies the solution from commit 93bb0d8 to the vmx case.
2017-08-23 13:04:42 +02:00
Matthew Hooker 81522dced0
move packer to hashicorp 2017-04-04 13:39:01 -07:00
Ricard Clau acededfc6e tests actually test the floppies 2016-07-27 21:59:21 +01:00
Chris Bednarski 6504f4f777 Revert "Only validate vmware resources on local hosts"
This reverts commit f01578c91e.
2016-02-02 12:41:42 -08:00
Jake Champlin f01578c91e Only validate vmware resources on local hosts
Disable resource validation when `remote_type` is specified
2016-01-25 12:01:56 -05:00
Mark Peek 7f149e595d Refactor http server config into common 2015-11-01 14:45:47 -08:00
Mitchell Hashimoto 84189f7a28 builder/*: properly save interpolation context 2015-06-22 09:22:42 -07:00
Mitchell Hashimoto 3f636ef7f3 vmware/vmx: clarify messaging for source path required error 2015-05-29 17:04:11 -07:00
Mitchell Hashimoto c3b75f4b86 vmware/vmx: interpolation 2015-05-27 14:21:15 -07:00
Mitchell Hashimoto c74f0c7cfe Merge branch '1082-add-boot-commands-to-vmx-and-ovf-builders' of github.com:rasa/packer into rasa-1082-add-boot-commands-to-vmx-and-ovf-builders
Conflicts:
	builder/virtualbox/ovf/config.go
	builder/vmware/vmx/config.go
2014-09-05 11:42:01 -07:00
Ross Smith II e93697ab4e builder/virtualbox-ovf,vmware-vmx: add `boot_command` support
Fixes #1082
2014-05-12 21:19:24 -07:00
Ross Smith II 8313856949 builder/vmware-vmx: add floppy_files support 2014-05-12 18:24:03 -07:00
Ross Smith II ba13239672 builder/vmware-vmx: Added tools_upload_flavor support 2014-05-09 17:24:19 -07:00
Ross Smith II bea167a48e builder/vmware-vmx: add floppy_files support
fixes #1057
2014-05-06 17:20:26 -07:00
Mitchell Hashimoto eeadafc452 builder/vmware/*: can specify path to fusion [GH-677] 2013-12-27 08:37:39 -07:00
Mitchell Hashimoto 8e75075ec9 builder/vmware/vmx: compact disk 2013-12-26 15:35:37 -07:00
Mitchell Hashimoto 7f38cea9f3 builder/vmware/vmx: shutdown 2013-12-26 15:31:23 -07:00
Mitchell Hashimoto e11f655d22 builder/vmware/vmx: run the VMs 2013-12-26 15:26:09 -07:00
Mitchell Hashimoto 286edcb2b4 builder/vmware/vmx: configure VMX 2013-12-26 15:14:19 -07:00
Mitchell Hashimoto eeeaec3562 builder/vmware/vmx: StepCloneVMX 2013-12-26 08:34:27 -07:00
Mitchell Hashimoto 141cfeb4bb builder/vmware/vmx: outputdir 2013-12-25 16:01:57 -07:00
Mitchell Hashimoto 6fdcb0f832 builder/vmware/vmx: initial stuff 2013-12-25 15:52:40 -07:00