mirror of https://github.com/hashicorp/packer
In previous versions of hcl2_upgrade, we referenced a list of passthrough statements from the original JSON template to be replaced by their equivalent Go-template in HCL2. This works but requires us to explicitely accept every possible templated variable in order to not ever encounter <no value> in our generated HCL2 templates. This is suboptimal, hence this commit changes approach by pre-visting the AST from the original Go Template, escaping every sequence that is not covered by the list of functions we can migrate. Pipes are also excluded from this function.pull/12085/head
parent
bc55d6d2d6
commit
3c249c0d42
@ -0,0 +1,24 @@
|
||||
|
||||
source "amazon-ebs" "autogenerated_1" {
|
||||
run_tags = {
|
||||
SourceAMI = "{{ .SourceAMI }}"
|
||||
SourceAMICreationDate = "{{ .SourceAMICreationDate }}"
|
||||
SourceAMIName = "{{ .SourceAMIName }}"
|
||||
SourceAMIOwner = "{{ .SourceAMIOwner }}"
|
||||
SourceAMIOwnerName = "{{ .SourceAMIOwnerName }}"
|
||||
SourceAMITags = "{{ .SourceAMITags.TagName }}"
|
||||
}
|
||||
tags = {
|
||||
SourceAMI = "{{ .SourceAMI }}"
|
||||
SourceAMICreationDate = "{{ .SourceAMICreationDate }}"
|
||||
SourceAMIName = "{{ .SourceAMIName }}"
|
||||
SourceAMIOwner = "{{ .SourceAMIOwner }}"
|
||||
SourceAMIOwnerName = "{{ .SourceAMIOwnerName }}"
|
||||
SourceAMITags = "{{ .SourceAMITags.TagName }}"
|
||||
}
|
||||
}
|
||||
|
||||
build {
|
||||
sources = ["source.amazon-ebs.autogenerated_1"]
|
||||
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
{
|
||||
"builders": [{
|
||||
"type": "amazon-ebs",
|
||||
"tags": {
|
||||
"SourceAMIName" : "{{ .SourceAMIName }}",
|
||||
"SourceAMI" : "{{ .SourceAMI }}",
|
||||
"SourceAMICreationDate" : "{{ .SourceAMICreationDate }}",
|
||||
"SourceAMIOwner" : "{{ .SourceAMIOwner }}",
|
||||
"SourceAMIOwnerName" : "{{ .SourceAMIOwnerName }}",
|
||||
"SourceAMITags": "{{ .SourceAMITags.TagName }}"
|
||||
},
|
||||
"run_tags": {
|
||||
"SourceAMIName" : "{{.SourceAMIName}}",
|
||||
"SourceAMI" : "{{.SourceAMI}}",
|
||||
"SourceAMICreationDate" : "{{.SourceAMICreationDate}}",
|
||||
"SourceAMIOwner" : "{{.SourceAMIOwner}}",
|
||||
"SourceAMIOwnerName" : "{{.SourceAMIOwnerName}}",
|
||||
"SourceAMITags": "{{ .SourceAMITags.TagName }}"
|
||||
}
|
||||
}]
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
|
||||
variable "envtest" {
|
||||
type = string
|
||||
default = "${env("Something")}"
|
||||
}
|
||||
|
||||
variable "test" {
|
||||
type = string
|
||||
default = "{{ .Something }}"
|
||||
}
|
||||
|
||||
source "null" "autogenerated_1" {
|
||||
communicator = "none"
|
||||
other_prop = "{{ .Else }}"
|
||||
}
|
||||
|
||||
build {
|
||||
sources = ["source.null.autogenerated_1"]
|
||||
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
{
|
||||
"variables": {
|
||||
"test": "{{ .Something }}",
|
||||
"envtest": "{{ env \"Something\"}}"
|
||||
},
|
||||
"builders": [
|
||||
{
|
||||
"type": "null",
|
||||
"communicator": "none",
|
||||
"other_prop": "{{ .Else }}"
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Reference in new issue