Merge pull request #6546 from mzupan/do-add-tags

Add tags to DigitalOcean Droplets
This commit is contained in:
Rickard von Essen 2018-08-15 15:52:32 +02:00 committed by GitHub
commit 25452945d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 0 deletions

View File

@ -4,6 +4,7 @@ import (
"errors"
"fmt"
"os"
"regexp"
"time"
"github.com/hashicorp/packer/common"
@ -35,6 +36,7 @@ type Config struct {
DropletName string `mapstructure:"droplet_name"`
UserData string `mapstructure:"user_data"`
UserDataFile string `mapstructure:"user_data_file"`
Tags []string `mapstructure:"tags"`
ctx interpolate.Context
}
@ -121,6 +123,17 @@ func NewConfig(raws ...interface{}) (*Config, []string, error) {
}
}
if c.Tags == nil {
c.Tags = make([]string, 0)
}
tagRe := regexp.MustCompile("^[[:alnum:]:_-]{1,255}$")
for _, t := range c.Tags {
if !tagRe.MatchString(t) {
errs = packer.MultiErrorAppend(errs, errors.New(fmt.Sprintf("invalid tag: %s", t)))
}
}
if errs != nil && len(errs.Errors) > 0 {
return nil, nil, errs
}

View File

@ -49,6 +49,7 @@ func (s *stepCreateDroplet) Run(_ context.Context, state multistep.StateBag) mul
Monitoring: c.Monitoring,
IPv6: c.IPv6,
UserData: userData,
Tags: c.Tags,
})
if err != nil {
err := fmt.Errorf("Error creating droplet: %s", err)

View File

@ -88,6 +88,8 @@ builder.
- `user_data_file` (string) - Path to a file that will be used for the user
data when launching the Droplet.
- `tags` (list) - Tags to apply to the droplet when it is created
## Basic Example
Here is a basic example. It is completely valid as soon as you enter your own