44 lines
1 KiB
Go
44 lines
1 KiB
Go
package secretsmanager
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"secretsmanager/config"
|
|
|
|
"github.com/hashicorp/vault-client-go"
|
|
"github.com/hashicorp/vault-client-go/schema"
|
|
)
|
|
|
|
type SecretsManager struct {
|
|
Ctx context.Context
|
|
Client *vault.Client
|
|
}
|
|
|
|
func InitializeClient(
|
|
cfg config.Config,
|
|
) SecretsManager {
|
|
|
|
s := SecretsManager{}
|
|
s.Ctx = context.Background()
|
|
s.Client, _ = vault.New(
|
|
vault.WithAddress(cfg.VaultAddr),
|
|
vault.WithRequestTimeout(30*time.Second),
|
|
vault.WithTLS(vault.TLSConfiguration{
|
|
InsecureSkipVerify: false,
|
|
}),
|
|
)
|
|
|
|
config.InfoLog("Attempting to login with user %s", cfg.VaultUsername)
|
|
loginResp, err := s.Client.Auth.UserpassLogin(s.Ctx, cfg.VaultUsername, schema.UserpassLoginRequest{Password: cfg.VaultPassword})
|
|
if err != nil {
|
|
config.FatalLog("Vault login request failed: %s", err)
|
|
}
|
|
config.InfoLog("Login successful. Token received.")
|
|
err = s.Client.SetToken(loginResp.Auth.ClientToken)
|
|
if err != nil {
|
|
config.FatalLog("Vault login could not set token: %s", err)
|
|
}
|
|
|
|
return s
|
|
}
|