feat: STACKIT Secrets Manager Action
Some checks failed
Release Secrets Manager Action / build (push) Has been cancelled

This commit is contained in:
Timo Bergen 2025-07-07 21:32:39 +02:00
commit cc0c27a4e9
9 changed files with 401 additions and 0 deletions

75
config/config.go Normal file
View file

@ -0,0 +1,75 @@
package config
import (
"log"
"os"
"github.com/creasty/defaults"
)
type Config struct {
VaultAddr string `default:"https://prod.sm.eu01.stackit.cloud" env:"VAULT_ADDR"`
VaultUsername string `env:"VAULT_USERNAME"`
VaultPassword string `env:"VAULT_PASSWORD"`
VaultSecretsManagerID string `env:"VAULT_ID"`
VaultPath string `env:"VAULT_PATH"`
Debug bool `default:"false" env:"DEBUG"`
}
// DebugLog prints debug messages only if DEBUG is enabled
func DebugLog(format string, args ...interface{}) {
if os.Getenv("DEBUG") == "true" {
log.Printf("DEBUG: "+format, args...)
}
}
// InfoLog prints info messages only if DEBUG is enabled
func InfoLog(format string, args ...interface{}) {
if os.Getenv("DEBUG") == "true" {
log.Printf("INFO: "+format, args...)
}
}
// ErrorLog prints error messages only if DEBUG is enabled
func ErrorLog(format string, args ...interface{}) {
if os.Getenv("DEBUG") == "true" {
log.Printf("ERROR: "+format, args...)
}
}
// FatalLog always prints fatal messages and exits
func FatalLog(format string, args ...interface{}) {
log.Fatalf("FATAL: "+format, args...)
}
func ValidateConfig(
cfg Config,
) Config {
defaults.Set(&cfg)
if cfg.VaultAddr == "" {
FatalLog("VAULT_ADDR cannot be empty")
}
if cfg.VaultUsername == "" {
FatalLog("VAULT_USERNAME cannot be empty")
}
if cfg.VaultPassword == "" {
FatalLog("VAULT_PASSWORD cannot be empty")
}
if cfg.VaultSecretsManagerID == "" {
FatalLog("VAULT_ID cannot be empty, in the Secrets Manager UI this is called 'Secrets Manager-ID'")
}
if cfg.VaultPath == "" {
FatalLog("VAULT_SECRET cannot be empty, this is the key of your secret")
}
InfoLog("Using Vault address: %s", cfg.VaultAddr)
InfoLog("Vault path: %s", cfg.VaultPath)
InfoLog("Mount: %s", cfg.VaultSecretsManagerID)
return cfg
}