diff --git a/packer/template.go b/packer/template.go index 5f05962dc..995d66342 100644 --- a/packer/template.go +++ b/packer/template.go @@ -161,6 +161,10 @@ func ParseTemplate(data []byte) (t *Template, err error) { continue } + // Now that we have the name, remove it from the config - as the builder + // itself doesn't know about, and it will cause a validation error. + delete(v, "name") + raw.rawConfig = v t.Builders[raw.Name] = raw diff --git a/packer/template_test.go b/packer/template_test.go index af7e3e402..32d38222f 100644 --- a/packer/template_test.go +++ b/packer/template_test.go @@ -128,6 +128,19 @@ func TestParseTemplate_BuilderWithName(t *testing.T) { builder, ok := result.Builders["bob"] assert.True(ok, "should have bob builder") assert.Equal(builder.Type, "amazon-ebs", "builder should be amazon-ebs") + + rawConfig := builder.rawConfig + if rawConfig == nil { + t.Fatal("missing builder raw config") + } + + expected := map[string]interface{}{ + "type": "amazon-ebs", + } + + if !reflect.DeepEqual(rawConfig, expected) { + t.Fatalf("bad raw: %#v", rawConfig) + } } func TestParseTemplate_BuilderWithConflictingName(t *testing.T) {