Skip to content

Commit

Permalink
Add envsubst provider (#82)
Browse files Browse the repository at this point in the history
* Add envsubst provider

* Update README.md

Co-authored-by: mvkarpu1 <[email protected]>
Co-authored-by: Yusuke Kuoka <[email protected]>
  • Loading branch information
3 people authored Jun 9, 2022
1 parent b8264f6 commit d1a8606
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 1 deletion.
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,7 @@ EOF
- [Echo](#echo)
- [File](#file)
- [Azure Key Vault](#azure-key-vault)
- [EnvSubst](#envsubst)

Please see [pkg/providers](https://github.com/variantdev/vals/tree/master/pkg/providers) for the implementations of all the providers. The package names corresponds to the URI schemes.

Expand Down Expand Up @@ -534,6 +535,17 @@ Examples:
- `ref+azurekeyvault://my-vault/secret-a/ba4f196b15f644cd9e949896a21bab0d`
- `ref+azurekeyvault://gov-cloud-test.vault.usgovcloudapi.net/secret-b`
### EnvSubst
Environment variables substitution.
- `ref+envsubst://$VAR1`
Examples:
- `ref+envsubst://$VAR1` loads environment variables `$VAR1`
#### Authentication
Vals aquires Azure credentials though Azure CLI or from environment variables. The easiest way is to run `az login`. Vals can then aquire the current credentials from `az` without further set up.
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ require (
github.com/Azure/azure-sdk-for-go v56.2.0+incompatible
github.com/Azure/go-autorest/autorest v0.11.19
github.com/Azure/go-autorest/autorest/azure/auth v0.5.8
github.com/a8m/envsubst v1.3.0
github.com/aws/aws-sdk-go v1.40.28
github.com/fujiwara/tfstate-lookup v0.4.2
github.com/google/go-cmp v0.5.5
Expand All @@ -20,6 +21,5 @@ require (
go.mozilla.org/sops/v3 v3.7.1
google.golang.org/genproto v0.0.0-20210420162539-3c870d7478d2
gopkg.in/ini.v1 v1.51.0 // indirect
gopkg.in/yaml.v2 v2.3.0 // indirect
gopkg.in/yaml.v3 v3.0.0-20210107172259-749611fa9fcc
)
3 changes: 3 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,8 @@ github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEV
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
github.com/a8m/envsubst v1.3.0 h1:GmXKmVssap0YtlU3E230W98RWtWCyIZzjtf1apWWyAg=
github.com/a8m/envsubst v1.3.0/go.mod h1:MVUTQNGQ3tsjOOtKCNd+fl8RzhsXcDvvAEzkhGtlsbY=
github.com/alecthomas/go-thrift v0.0.0-20170109061633-7914173639b2/go.mod h1:CxCgO+NdpMdi9SsTlGbc0W+/UNxO3I0AabOEJZ3w61w=
github.com/alecthomas/kong v0.2.1/go.mod h1:+inYUSluD+p4L8KdviBSgzcqEjUQOfC5fQDRFuc36lI=
github.com/alecthomas/participle v0.4.2-0.20191220090139-9fbceec1d131 h1:iPgE4wTIM/fgSreWdpxnKXxaGOgGwfPqc2aVPq2BFSU=
Expand Down Expand Up @@ -836,6 +838,7 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200121175148-a6ecf24a6d71/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107172259-749611fa9fcc h1:XANm4xAMEQhRdWKqaL0qmhGDv7RuobwCO97TIlktaQE=
Expand Down
44 changes: 44 additions & 0 deletions pkg/providers/envsubst/envsubst.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package envsubst

import (
"strings"

envSubst "github.com/a8m/envsubst"
"github.com/variantdev/vals/pkg/api"
"gopkg.in/yaml.v3"
)

type provider struct {
}

func New(cfg api.StaticConfig) *provider {
p := &provider{}
return p
}

func (p *provider) GetString(key string) (string, error) {
key = strings.TrimSuffix(key, "/")
key = strings.TrimSpace(key)

str, err := envSubst.String(key)
if err != nil {
return "", err
}
return str, nil
}

func (p *provider) GetStringMap(key string) (map[string]interface{}, error) {
key = strings.TrimSuffix(key, "/")
key = strings.TrimSpace(key)

bs, err := envSubst.Bytes([]byte(key))
if err != nil {
return nil, err
}

m := map[string]interface{}{}
if err := yaml.Unmarshal(bs, &m); err != nil {
return nil, err
}
return m, nil
}
6 changes: 6 additions & 0 deletions vals.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"github.com/variantdev/vals/pkg/providers/awssecrets"
"github.com/variantdev/vals/pkg/providers/azurekeyvault"
"github.com/variantdev/vals/pkg/providers/echo"
"github.com/variantdev/vals/pkg/providers/envsubst"
"github.com/variantdev/vals/pkg/providers/file"
"github.com/variantdev/vals/pkg/providers/gcpsecrets"
"github.com/variantdev/vals/pkg/providers/gcs"
Expand Down Expand Up @@ -70,6 +71,7 @@ const (
ProviderTFStateAzureRM = "tfstateazurerm"
ProviderTFStateRemote = "tfstateremote"
ProviderAzureKeyVault = "azurekeyvault"
ProviderEnvSubst = "envsubst"
)

type Evaluator interface {
Expand Down Expand Up @@ -192,6 +194,9 @@ func (r *Runtime) Eval(template map[string]interface{}) (map[string]interface{},
case ProviderKms:
p := awskms.New(conf)
return p, nil
case ProviderEnvSubst:
p := envsubst.New(conf)
return p, nil
}
return nil, fmt.Errorf("no provider registered for scheme %q", scheme)
}
Expand Down Expand Up @@ -351,6 +356,7 @@ var KnownValuesTypes = []string{
ProviderTFState,
ProviderFile,
ProviderEcho,
ProviderEnvSubst,
}

type ctx struct {
Expand Down

0 comments on commit d1a8606

Please sign in to comment.