diff --git a/publish/vault.go b/publish/vault.go index 01e0ddc0e..301e13bc3 100644 --- a/publish/vault.go +++ b/publish/vault.go @@ -4,6 +4,7 @@ import ( "fmt" "strings" + "github.com/google/go-cmp/cmp" vault "github.com/hashicorp/vault/api" ) @@ -65,6 +66,17 @@ func (vaultd *VaultDestination) UploadUnencrypted(data map[string]interface{}, f } } + existingSecret, err := client.Logical().Read(vaultd.secretsPath(fileName)) + if err != nil { + return err + } + if existingSecret != nil { + if cmp.Equal(data, existingSecret.Data["data"]) { + fmt.Printf("Secret in %s is already up-to-date.\n", vaultd.secretsPath(fileName)) + return nil + } + } + secretsData := make(map[string]interface{}) if vaultd.kvVersion == 1 {