diff --git a/builder/cloudstack/config.go b/builder/cloudstack/config.go index f74a89502..00f79618b 100644 --- a/builder/cloudstack/config.go +++ b/builder/cloudstack/config.go @@ -59,6 +59,8 @@ type Config struct { TemplateScalable bool `mapstructure:"template_scalable"` TemplateTag string `mapstructure:"template_tag"` + Tags map[string]string `mapstructure:"tags"` + ctx interpolate.Context } diff --git a/builder/cloudstack/step_create_instance.go b/builder/cloudstack/step_create_instance.go index d20b19f56..73aaa2133 100644 --- a/builder/cloudstack/step_create_instance.go +++ b/builder/cloudstack/step_create_instance.go @@ -149,6 +149,20 @@ func (s *stepCreateInstance) Run(ctx context.Context, state multistep.StateBag) // Store the instance ID so we can remove it later. state.Put("instance_id", instance.Id) + // Set instance tags + if config.Tags != nil { + resourceID := []string{instance.Id} + tp := client.Resourcetags.NewCreateTagsParams(resourceID, "UserVm", config.Tags) + + _, err = client.Resourcetags.CreateTags(tp) + + if err != nil { + state.Put("error", err) + ui.Error(err.Error()) + return multistep.ActionHalt + } + } + return multistep.ActionContinue }