Commit Graph

68 Commits

Author SHA1 Message Date
Megan Marsh 88b7b0e14a remove sdk 2020-12-17 13:29:25 -08:00
Megan Marsh ea1ac530b0 move hcl2template kv types into the config/custom_types with trilean definitions 2020-11-18 15:46:59 -08:00
Braunson b2047bd938
Put the correct AzureTags type in StateBag (#10014)
Azure expects the tags format to use a pointer to the string for the map value.
The configuration from the builder is not a pointer so when storing in the state bag for
reference in later execution we convert it when creating the StateBag.

Fixes #10012 and #10013.

* Use the MapToAzureTags helper and error check in resource group creation

* Added test case for tag values not using a pointer

* test/azure/arm: Add test to verify tags stored in state

* test/azure/arm: Add azure_tags to existing acceptance test for Linux

Test Before Fix
```
--- FAIL: TestBuilderAcc_ManagedDisk_Linux (1.81s)
panic: interface conversion: interface {} is map[string]string, not map[string]*string [recovered]
        panic: interface conversion: interface {} is map[string]string, not map[string]*string
FAIL    github.com/hashicorp/packer/builder/azure/arm   1.822s

```

Test After Fix
```
2020/09/29 17:23:03 ui: ==> test: Resource group has been deleted.
--- PASS: TestBuilderAcc_ManagedDisk_Linux (517.41s)
    PASS
    ok      github.com/hashicorp/packer/builder/azure/arm   517.426s
```

Co-authored-by: Wilken Rivera <dev@wilkenrivera.com>
2020-09-30 09:55:46 -04:00
Adrien Delorme 654fade0a9
azure arm: make map[string]*string => map[string]string to simplify things (#9985)
* azure arm: make map[string]*string => map[string]string to simplify things
* go generate ./builder/azure/...
* tests !

fix #9984
2020-09-24 12:19:26 +02:00
Paul Meyer deca28c158 Disable password auth on ssh key Linux builds 2020-07-16 22:26:06 +00:00
Feiyu Shi f7f033a7fd add config validation test 2020-05-24 19:05:45 -07:00
Wilken Rivera c954831bb2 builder/azure-arm: Update runtime constants with a valid DataDiskName
This change fixes an issue where using the `disk_additional_size` configuration option would cause builds to fail.

Build results before the change
```
==> Builds finished but no artifacts were created.
Build 'azure-arm' errored: Code="DeploymentFailed" Message="At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details." Details=[{"code":"BadRequest","message":"{\r\n  \"error\": {\r\n    \"code
\": \"InvalidParameter\",\r\n    \"message\": \"The entity name 'dataDisk.name' is invalid according to its validation rule: ^[^_\\\\W][\\\\w-._]{0,79}(?\u003c![-.])$.\",\r\n    \"target\": \"dataDisk.name\"\r\n  }\r\n}"}]

```

Build results after change
```
Build 'azure-arm' finished.

==> Builds finished. The artifacts of successful builds are:
--> azure-arm: Azure.ResourceManagement.VMImage:

OSType: Linux
ManagedImageResourceGroupName: test-pkr
ManagedImageName: wilkenPacker9249
```

Closes #9249
2020-05-18 14:57:20 -04:00
Wilken Rivera 86ab71f56e
test/azure/arm: Add regression test case for ssh_username overrides (#9136)
This test is for the regression fixed in #9103

Before fix
```
⇶  go test ./builder/azure/arm/... -run=TestConfigUserNameOverride
--- FAIL: TestConfigUserNameOverride (0.42s)
    config_test.go:75: Expected 'c.Comm.SSHPassword' to be set to generated password, but found ""!
    config_test.go💯 Expected 'UserName' to be set to 'override_winrm_username', but found "packer"!
FAIL
FAIL    github.com/hashicorp/packer/builder/azure/arm   0.425s
FAIL

```

After fix
```
⇶  go test ./builder/azure/arm/... -run=TestConfigUserNameOverride
ok      github.com/hashicorp/packer/builder/azure/arm   0.379s
```

* Fix variable names in error messages
2020-04-30 10:49:58 +02:00
Sylvia Moss e6368b9246
Fix azure winrm_password attribution and allow to set winrm_username (#8928) 2020-03-24 14:43:24 +01:00
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