In order to work with an ever increasing number of secret stores and providers this library provides a basic interface to allow client applications to read and write secrets. It optionally provides idiomatic authentication mechanisms for each of the various secret stores.
To install, run:
$ go get github.com/jenkins-x-plugins/secretfacade
And import using:
import "github.com/jenkins-x-plugins/secretfacade"
Usage:
package main
import (
"fmt"
"github.com/jenkins-x-plugins/secretfacade/pkg/secretstore"
"github.com/jenkins-x-plugins/secretfacade/pkg/secretstore/factory"
)
func main() {
factory := factory.SecretManagerFactory{}
mgr, err := factory.NewSecretManager(secretstore.SecretStoreTypeGoogle)
if err != nil {
panic("error creating google secret manager from factory")
}
err = mgr.SetSecret("projectId", "myDatabaseConnectionString", &secretstore.SecretValue{Value: "superSecret"})
if err != nil {
panic("error setting myDatabaseConnectionString secret")
}
connectionStringSecret, err := mgr.GetSecret("projectId", "myDatabaseConnectionString", "")
if err != nil {
panic("error getting myDatabaseConnectionString secret")
}
fmt.Printf("Please don't print out secrets like %s", connectionStringSecret)
}