Ombyggnad 2026/2027 pågår - döda länkar förekommer. Mer information

Automatisera upplåsning av Ansible Vault

2026-05-12 på Anders Ytterströms webblogg

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

Ovanstående inlägg publicerades 2026-05-12. Det går att prenumerera på denna webblogg. Härifrån är följande mål rekommenderade: