lastpass / lastpass-cli

LastPass command line interface tool
GNU General Public License v2.0
2.85k stars 292 forks source link

kubernetes external-secrets provider #584

Open kferrone opened 3 years ago

kferrone commented 3 years ago

I would absolutely love to see first class support for lastpass as a kubernetes external secrets provider.

GoDaddy and others started a new group for all external-secrets providers here: https://github.com/external-secrets/kubernetes-external-secrets

I also asked for integration on that repo as well in this issue: https://github.com/external-secrets/kubernetes-external-secrets/issues/575

Currently all I have to tide me over is a hacky little kustomize plugin like so:

#!/usr/bin/env bash

set -e

res="$(cat $1)"
shift
argsOneLiner="$@"

function getProp() {
    yaml=$1
    shift
    echo "$yaml" | yq r - $@
}

name=$(getProp "$res" metadata.name)
ns=$(getProp "$res" metadata.namespace -D default)
passID=$(getProp "$res" id -D "$name")

lpasswd="$(lpass show $argsOneLiner $passID)"
secretUrl=$(getProp "$lpasswd" URL)
secretUser=$(getProp "$lpasswd" Username)
secretPass=$(getProp "$lpasswd" Password)

cat <<EOF
apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: ${name}
  namespace: ${ns}
data: 
    url: $(printf '%s' ${secretUrl} | base64)
    username: '$(printf '%s' ${secretUser} | base64)'
    password: '$(printf '%s' ${secretPass} | base64)'
EOF

Here is an example of how I use:

apiVersion: myorg
kind: LpassSecret
metadata:
  name: mydb
id: some-public-db