Automatisera upplåsning av Ansible Vault
Såhär kan miljövariabler användas för att spara Ansible Vault-lösenord under en session.
Script för att ange lösenordet
Lösenordet bör matas in manuellt eller klistras in, för att inte hamna i skalhistoriken. Detta görs enklast med ett script. Scriptet kan även ha en kontroll så att lösenordet är satt och därmed inte behöver sättas igen.
Här är ett sådant script, med POSIX-kompabilitet.
#!/bin/sh
if [ -z "${ANSIBLE_VAULT_PASS}" ]; then
printf "Ange Vault-lösenord: "
stty -echo
read -r avp
stty echo
export ANSIBLE_VAULT_PASS="$avp"
unset avp
echo ""
else
echo "Lösenordet ligger redan i sessionen"
fi
Använd sedan detta script genom att sourca det:
. set-av.sh
Använd miljövariabeln
Att använda miljövariabeln som Ansible vault password är tyvärr ingenting som Ansible officiellt stödjer. De förlitar sig istället på att lösenordet placeras i en fil på disk.
Så, i bash är det enklaste sättet att använda process substitution:
ansible-vault view valvet.yml \
--vault-password-file <(echo "$ANSIBLE_VAULT_PASS")
För POSIX-kompabilitet, skapa en ny fil som ekar ut värdet i miljövariabeln.
#!/bin/bash
echo "$ANSIBLE_VAULT_PASS"
Gör denna fil körbar och referera sedan den:
chmod +x ./.echo-vault-password.sh
ansible-vault view valvet.yml \
--vault-password-file ./.echo-vault-password.sh