You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
consul/vendor/github.com/hashicorp/go-discover
James Phillips aaf43f999b
Updates go-discover to get monkey patch for golang.org/x/net/trace.
7 years ago
..
provider Updates go-discover to get monkey patch for golang.org/x/net/trace. 7 years ago
LICENSE vendor: add go-discover 7 years ago
README.md vendor: update go-discover (#3634) 7 years ago
config.go Update github.com/hashicorp/go-discover to pull in new config parser 7 years ago
discover.go vendor: update go-discover (#3634) 7 years ago

README.md

Go Discover Nodes for Cloud Providers Build Status GoDoc

go-discover is a Go (golang) library and command line tool to discover ip addresses of nodes in cloud environments based on meta information like tags provided by the environment.

The configuration for the providers is provided as a list of key=val key=val ... tuples. If either the key or the value contains a space ( ), a backslash (\) or double quotes (") then it needs to be quoted with double quotes. Within a quoted string you can use the backslash to escape double quotes or the backslash itself, e.g. key=val "some key"="some value"

Duplicate keys are reported as error and the provider is determined through the provider key.

Supported Providers

The following cloud providers have implementations in the go-discover/provider sub packages. Additional providers can be added through the Register function.

Config Example

# Aliyun (Alibaba) Cloud
provider=aliyun region=... tag_key=consul tag_value=... access_key_id=... access_key_secret=...

# Amazon AWS
provider=aws region=eu-west-1 tag_key=consul tag_value=... access_key_id=... secret_access_key=...

# DigitalOcean
provider=digitalocean region=... tag_name=... api_token=...

# Google Cloud
provider=gce project_name=... zone_pattern=eu-west-* tag_value=consul credentials_file=...

# Microsoft Azure
provider=azure tag_name=consul tag_value=... tenant_id=... client_id=... subscription_id=... secret_access_key=...

# Openstack
provider=os tag_key=consul tag_value=server username=... password=... auth_url=...

# Scaleway
provider=scaleway organization=my-org tag_name=consul-server token=... region=...

# SoftLayer
provider=softlayer datacenter=dal06 tag_value=consul username=... api_key=...

Command Line Tool Usage

Install the command line tool with:

go get -u github.com/hashicorp/go-discover/cmd/discover

Then run it with:

$ discover addrs provider=aws region=eu-west-1 ...

Library Usage

Install the library with:

go get -u github.com/hashicorp/go-discover

You can then either support discovery for all available providers or only for some of them.

// support discovery for all supported providers
d := discover.Discover{}

// support discovery for AWS and GCE only
d := discover.Discover{
	Providers : map[string]discover.Provider{
		"aws": discover.Providers["aws"],
		"gce": discover.Providers["gce"],
	}
}

// use ioutil.Discard for no log output
l := log.New(os.Stderr, "", log.LstdFlags)

cfg := "provider=aws region=eu-west-1 ..."
addrs, err := d.Addrs(cfg, l)

For complete API documentation, see GoDoc. The configuration for the supported providers is documented in the providers sub-package.