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 where the values can be URL encoded. The provider is
determined through the
provider key. Effectively, only spaces have to
be encoded with a
+ and on the command line you have to observe
quoting rules with your shell.
# Amazon AWS provider=aws region=eu-west-1 tag_key=consul tag_value=... access_key_id=... secret_access_key=... # 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=...
The following cloud providers are supported but additional providers
can be added to the
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 provider=aws region=eu-west-1 ...
Install the library with:
go get -u github.com/hashicorp/go-discover
Then call the
discover.Discover function with the arguments
for the provider you want to use:
# use ioutil.Discard for no log output l := log.New(os.Stderr, "", log.LstdFlags) args := "provider=aws region=eu-west-1 ..." addrs, err := discover.Discover(args, l)