Hi,
I’m completely new to GOlang and the mentioned hclwrite package.
I’m trying to manipulate the following pkr.hcl file using the hclwrite GO package:
I parse the config with the ParseConfig()
function like so:
hclwrite.ParseConfig(tfSourceFile, "", hcl.Pos{Line: 1, Column: 1})
.
I need to be able to:
-
Remove specific variables, which I’ve been able to achieve with the
RemoveBlock()
function for example like so:
rootBody.RemoveBlock(rootBody.FirstMatchingBlock("variable", []string{"allowed_inbound_ip_addresses"}))
-
Add variables, in the “top section” with the other variables as to say, so the
AppendNewBlock()
orAppendBlock()
wouldn’t work for me? Since they state that they append the block “to the end of the receiving body”. What would be the way to approach this? -
Remove/add/manipulate stuff in the
source "azure-arm" "build_vhd"{}
block. E.g. remove thetemp_resource_group_name = "${var.temp_resource_group_name}"
completely, change the value of thecapture_container_name = "images"
and addtest = "testValue"
etc. -
Add provisioners, in the
build{}
block. And I also need to be able to insert those provisioners at specified locations, like before or after specific already present provisioner blocks. -
Add a post-processor to the end of the
build{}
block. I’ve already managed to use theAppendNewBlock()
function to somewhat achieve this like so:
postProcessor := rootBody.AppendNewBlock("post-processor", []string{"manifest"}) postProcessorBody := postProcessor.Body() postProcessorBody.SetAttributeValue("testName", cty.StringVal("testValue"))
But the problem is that it appends to the bottom of the root body, I want to append to the bottom of thebuild{}
block.
So I guess that (at least some of) my problems are:
-
I’m not sure how to work with/divide the different sections/blocks (sorry for my lack of terminology here), e.g. the top section with the variables, the
source "azure-arm" "build_vhd"{}
block and thebuild{}
block. To be able to manipulate the contents accordingly. -
Being able to position my added blocks at specific positions.
Input is of course much appreciated!