Commit Graph

59 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
Megan Marsh d15f43e4eb
Merge pull request #8232 from hashicorp/artifact-tree
HCL2 configs - part one
2019-10-22 11:54:34 -07:00
Adrien Delorme f8402f1b91 builder.azure.common: make CloudEnvironment private so it doesn't temper with hcl2 code generation
the struct is not read from file but later set after some computations
2019-10-15 12:56:41 +02:00
Sumit Kalra 595b103bbe
Adding NSG to the ARM deployment template when needed (#3)
* Adding NSG to the ARM eployment template when needed

* Adding tests and fixing bugs

* Removing denyall rule

* Fixing logic to determine which port to open

* Fixing config description
2019-10-08 14:56:43 -07:00
Sumit Kalra 91d19adcd7 Ensuring that specifying allowed inbound IP and VNet are mutually exclusive (#2) 2019-09-26 23:33:18 +00:00
Sumit Kalra 132779c343 Adding config to specify allowed inbound IP addresses and CIDR blocks (#1)
* Adding config to specify allowed inbound IP addresses

* Also allowing CIDR blocks in addition to IP addresses
2019-09-26 23:31:28 +00:00
Paul Meyer feeae1514e Refactor client config 2019-09-25 20:33:38 +00:00
Manuel Riezebosch d79b54e46a feat(arm-builder): print warning on zone resiliency for currently not supported locations 2019-02-15 19:27:53 +01:00
Manuel Riezebosch f31031f6b1 feat(arm-builder): zone resilient from config 2019-02-15 19:27:32 +01:00
Paul Meyer 7e34579b7e Factor out Azure client credential config 2019-01-15 17:23:57 +00:00
Christopher Boumenot f9230aeb95 azure: fix snapshot regression 2018-12-13 13:58:18 -08:00
Christopher Boumenot c7d8f4e150 azure: configuration for disk caching
Export a configuration knob to change the disk caching setting. The
default value remains ReadWrite.  This seems the most appropriate value
given Packer.  Certain disk sizes require that disk caching be disable,
and this knob allows the user to do just that.
2018-11-30 14:14:43 -08:00
Christopher Boumenot 06c2c35e4c
Merge pull request #6980 from amydutta/amdut/snapshot
Adding options for Managed Image OS Disk and Data Disk(s) snapshot(s)
2018-11-16 15:51:52 -08:00
Amrita Dutta 67342750a3 Addressed PR comments 2018-11-14 01:47:48 +00:00
Adrien Delorme 175b6a7971 add test for MSI configuration 2018-11-12 12:04:57 +01:00
Amrita Dutta 213fbbae00 Updated go version and reformatted 2018-11-09 22:41:48 +00:00
Amrita Dutta 8d8c86366b Config tests + typo fix 2018-11-07 22:23:22 +00:00
Amrita Dutta 8c326dbab7 Formatting changes 2018-11-07 18:08:15 +00:00
mbearup c7180413b0 Fix tests for Shared Image Gallery 2018-10-09 16:38:50 -07:00
mbearup a3a2a9e970 Fix issue with composite literal in test 2018-10-09 15:35:09 -07:00
mbearup 335feaf89c Convert shared_image_gallery options to a struct
Updates tests and documentation for shared_image_gallery
2018-10-09 13:56:49 -07:00
mbearup 5373b8586d Update tests for Azure Shared Image Gallery 2018-10-05 16:04:07 -07:00
Matthew Hooker 3f1a9766f4
formatting verb fixes for go 1.11 2018-08-24 16:18:21 -07:00
Matthew Hooker e41e99954d
go 1.11 format rules 2018-08-24 15:56:44 -07:00
Hariharan Jayaraman 1f46271a6b Ensuring device login works for Windows build 2018-05-18 00:32:01 -07:00
Hariharan Jayaraman e1b18d594a Updates based on PR feedback 2018-05-15 11:41:26 -07:00
Paul Meyer a3fb24639a make tests pass again 2018-05-01 15:39:50 +00:00
Christopher Boumenot eb201724c1 azure: unit tests for naming temp resources 2018-03-20 16:20:11 -07:00
Josh Soref 210f8e8312 spelling: hyphen 2018-03-13 07:59:00 +00:00
Christopher Boumenot 1ef491d4c8 incorporate reviewer feedback 2018-03-08 22:43:26 -08:00
Christopher Boumenot d2e593de37 azure: support for marketplace plan information 2018-03-05 09:05:21 -08:00
jmajoor 675dc06967 Tests for the optional disk_additional_size configuration. 2018-02-26 17:37:46 -08:00
Jamie Lennox d043c37ad4 Azure: Don't provide location for build_resource_group_name
Location is required by default because you must specify where to create
the resource group containing the packer resources.

When using build_resource_group_name you are specifying that packer
should use an existing resource group and so the location that resources
are in can be determined by fetching the information from the existing
group.

It is forbidden to pass both variables as it is easier and more
intuitive that the location comes from the group rather than ignore a
parameter.

Closes: #5655
2017-12-04 11:22:54 +11:00
Christopher Boumenot a3c9485062 azure: sanity check resource group names 2017-11-20 15:19:12 -08:00
Christopher Boumenot 8985bd45ba azure: go fmt 2017-11-16 17:32:35 -08:00
Christopher Boumenot 2684153cb2 azure: reject bad configuration faster 2017-11-16 16:34:18 -08:00
Matthew Hooker d4895156e5
remove copyright notice 2017-09-07 11:44:38 -07:00
Christopher Boumenot 9a34fd15ca azure: improve docs and validation
Closes #5186
2017-08-24 15:23:13 -07:00
Christopher Boumenot 0780667b4d azure: support storage account for managed images
Closes #5202
2017-08-24 15:10:49 -07:00
Christopher Boumenot c09f8b84b9 azure: fit and finish
* More unit testing to assert customer's configuration.
 * Further reduce the options that are needed to power an Azure build.
   This seems like a much more manageable level.
 * Update all of the examples to use a more current VM sku.
 * Add an example for RHEL.
 * Move from OpenSuSE to SuSE.
 * Update the docs.
2017-06-26 11:13:39 -07:00
Matthew Hooker 81522dced0
move packer to hashicorp 2017-04-04 13:39:01 -07:00
Christopher Boumenot f908e18483 Merge pull request #3996 from boumenot/pr-issue-3968
azure: Allow user to set custom data
2016-10-13 13:39:54 -07:00
Christopher Boumenot 7d07fa7afc azure: Allow user to set custom data 2016-10-13 11:56:23 -07:00
Christopher Boumenot bba643df9a azure: handle os_type errors more gracefully 2016-10-13 09:26:29 -07:00
Christopher Boumenot ece0a78990 azure: tag all resources 2016-08-02 11:25:03 -07:00
Christopher Boumenot 871ca8c3d9 azure: Support for a user define VNET.
Two new configuration options have been exposed to allow users to specify
an existing virtual network: virtual_network_name and
virtual_network_resource_group_name.

 * virtual_network_name: name of the virtual network to attach a Packer VM
 to.

 * virtual_network_resource_group_name: name of the resource group that
 contains the virtual network.  This value is optional.  If the value is
 not specified, the builder queries Azure for the appropriate value.  If
 the builder cannot disambiguate the value, a value must be provided for
 this setting.

 * virtual_network_subnet_name: name of the subnet attached to the virtual
 network.  This value is optional.  If the value is not specified, the
 builder queries Azure for the appropriate value.  If the builder cannot
 disambiguate the value, a value must be provided for this setting.
2016-07-28 21:31:59 -07:00
Christopher Boumenot 408fe9bc18 Lint issues 2016-07-15 22:42:49 -07:00
Christopher Boumenot 16c1abf1d4 Fix slow unit tests. 2016-07-06 11:06:52 -07:00
Paul Meyer 163da48345 builder/azure-arm: Make tenant_id optional
Look up tenant id if not specified by the user
2016-06-23 10:23:09 -07:00
Christopher Boumenot 6dda6f77d6 Add resource_group_name to test cases. 2016-06-09 10:17:49 -07:00