Skip to content

Instantly share code, notes, and snippets.

@mnacharov
Created October 18, 2023 11:18
Show Gist options
  • Save mnacharov/5d5486b2693a8a8d0ad8d7019529c951 to your computer and use it in GitHub Desktop.
Save mnacharov/5d5486b2693a8a8d0ad8d7019529c951 to your computer and use it in GitHub Desktop.
export airflow secrets from json to hashocorp vault
package main
import (
"encoding/json"
"fmt"
"log"
"os"
"os/exec"
"strings"
)
func jsonFileToMap(jsonFile string) (map[string]json.RawMessage, error) {
result := make(map[string]json.RawMessage)
variables, err := os.ReadFile(jsonFile)
if err != nil {
return result, err
}
err = json.Unmarshal([]byte(variables), &result)
return result, err
}
func main() {
variables, err := jsonFileToMap(os.Args[1])
prefix := os.Args[2]
if err != nil {
log.Fatalf("error: %s", err)
}
for key, value := range variables {
log.Println(key)
valueMarshal, err := json.Marshal(&value)
if err != nil {
log.Fatalf("error: %s", err)
}
cmd := exec.Command("vault", "kv", "put",
fmt.Sprintf("%s/%s", prefix, key),
fmt.Sprintf("value=%s", strings.Trim(string(valueMarshal), "\"")))
vault, err := cmd.CombinedOutput()
log.Println(string(vault))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment