ferrvault lit les secrets d'un environnement de vault et les affiche, ou lance une commande avec eux dans son environnement. Elle s'authentifie avec un token de compte de service, et voit donc exactement l'environnement auquel ce token est lié.

Installer

Des binaires pour Linux et macOS (amd64 et arm64) et pour Windows (amd64) sont joints à chaque release cli-v*. Sous Linux ou macOS :

version=cli-v0.2.0
os="$(uname -s | tr '[:upper:]' '[:lower:]')"
arch="$(uname -m | sed 's/x86_64/amd64/; s/aarch64/arm64/')"
curl -fsSL "https://github.com/FerrLabs/FerrVault/releases/download/$version/ferrvault-$os-$arch.tar.gz" | tar -xz ferrvault
sudo install -m 0755 ferrvault /usr/local/bin/ferrvault

Sous Windows, téléchargez ferrvault-windows-amd64.zip depuis la même release et placez ferrvault.exe dans votre PATH. Sur toutes les plateformes, vous pouvez aussi compiler depuis les sources avec Cargo :

cargo install --locked --git https://github.com/FerrLabs/FerrVault ferrvault-cli

Se connecter

ferrvault login --url https://api.ferrvault.com

Le token est lu sur l'entrée standard, ou depuis --token ou FERRVAULT_TOKEN. Il est vérifié auprès de l'API avant d'être enregistré, puis conservé dans le magasin d'identifiants du système : Gestionnaire d'identification sous Windows, Trousseau sous macOS, libsecret sous Linux. Il n'y a pas de repli sur un fichier : sous Linux sans trousseau, login échoue.

En CI, sautez login et définissez FERRVAULT_URL et FERRVAULT_TOKEN dans l'environnement. Sur GitHub Actions, l'action FerrVault installe la CLI et exporte les secrets demandés en variables d'environnement masquées pour les étapes suivantes :

- uses: FerrLabs/FerrVault/action@cli-v0.2.0
  with:
    api-url: https://api.ferrvault.com
    token: ${{ secrets.FERRVAULT_TOKEN }}
    cli-version: cli-v0.2.0
    names: DATABASE_URL,STRIPE_KEY

Utilisez all: true à la place de names pour récupérer tous les secrets de l'environnement.

Commandes

Commande Ce qu'elle fait
ferrvault whoami Affiche le vault, le rôle, le libellé et l'expiration du token.
ferrvault list Liste les noms et versions des secrets, jamais les valeurs.
ferrvault get NAME Affiche une valeur.
ferrvault get --all Affiche toutes les valeurs, en --format env, dotenv ou json.
ferrvault get --names A,B Affiche une sélection.
ferrvault exec -- CMD Lance CMD avec chaque secret en variable d'environnement.
ferrvault set NAME VALUE Crée un secret, ou le fait tourner avec --update. Demande writer.
ferrvault delete NAME Supprime un secret en gardant ses versions. Demande writer.
ferrvault logout Oublie l'URL et le token enregistrés.

ferrvault exec n'écrit jamais les valeurs sur disque, c'est la façon la plus sûre de transmettre des secrets à un processus :

ferrvault exec -- ./run-migrations.sh
ferrvault exec --names DATABASE_URL,STRIPE_KEY -- npm run start

Déploiements privés

Option Effet
--ca-cert PATH Fait confiance à un certificat d'AC supplémentaire (PEM).
--client-cert, --client-key Présente un certificat client pour du TLS mutuel.
--pin-sha256 HASH Épingle le certificat serveur par le SHA-256 d'un certificat de sa chaîne.

Chaque option a sa variable d'environnement FERRVAULT_* ; ferrvault --help les liste.