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 f01578c91e140f67a0b56773be2b3f7d08d8faa9.
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