Ansible-Vault et Git diff
Ce matin, un lapin, a voulu merger; C’était un lapin, qui jouait à git
.
Je m’égare, je m’égare. Ce matin, un collègue chargé d’une revue de code a déclaré ne pas pouvoir vérifier le diff entre deux versions d’un fichier chiffré avec ansible-vault
.
D’un côté, il a raison, ce n’est pas possible dans l’interface de gitlab
. Pour se faire il faut nécéssairement avoir le mot-de-passe pour déchiffrer les versions avant et après modifications pour les comparer. De l’autre, localement, c’est tout à fait possible. Voici un petit script qui simplifie la vie dans ce cas de figure.
#!/bin/bash
function Help() {
echo
echo "Diff for ansible-vault encrypted files"
echo
echo "$(basename $0) [-c commit] [-f encrypted-file] [-p vault-password-file]"
echo
echo "Options:"
echo " -c commit"
echo " -f encrypted-file"
echo " -p vault-password-file"
exit 0
}
while getopts ":hc:f:p:" option; do
case $option in
\?)
echo Invalid -$OPTARG option
Help
exit;;
h)
Help
exit;;
c) commit=$OPTARG;;
f) encrypted_file=$OPTARG;;
p) vault_password_file=$OPTARG;;
esac
done
[[ -z "${commit:+x}" ]] && echo "Missing -c commit argument" && Help;
[[ -z "${encrypted_file:+x}" ]] && echo "Missing -f encrypted-file argument" && Help;
[[ -z "${vault_password_file:+x}" ]] && echo "Missing -p vault-password-file argument" && Help;
diff -u \
<(ansible-vault view --vault-password-file="${vault_password_file}" <(git show "${commit}^:${encrypted_file}")) \
<(ansible-vault view --vault-password-file="${vault_password_file}" <(git show "${commit}:${encrypted_file}"))
Rien de magique ici:
- Recueillir les informations via les arguments en ligne de commande,
- Déchiffrer les deux versions via
ansible-vault
, - Les passer à
diff
pour visualisation.
Plus d’excuse pour les revues !