fix(vault): kubectl без -i и с < /dev/null — exec съедал stdin цикла
This commit was merged in pull request #7.
This commit is contained in:
+9
-5
@@ -13,6 +13,10 @@ set default-script
|
|||||||
# кластеру, и смысл ручного unseal (PVC без ключей бесполезен) пропадёт.
|
# кластеру, и смысл ручного unseal (PVC без ключей бесполезен) пропадёт.
|
||||||
# Копии ключей держи в менеджере паролей и на бумаге: они показываются один раз
|
# Копии ключей держи в менеджере паролей и на бумаге: они показываются один раз
|
||||||
# при `vault operator init`.
|
# при `vault operator init`.
|
||||||
|
#
|
||||||
|
# kubectl зовём БЕЗ -i и всегда с < /dev/null: exec с -i подключает stdin
|
||||||
|
# контейнера к нашему stdin, а это stdin файла ключей в цикле ниже — после первого
|
||||||
|
# ключа цикл получал EOF и распечатывал Vault одной долей.
|
||||||
keys_file := env('VAULT_UNSEAL_KEYS', clean(justfile_directory() + '/vault-unseal-keys'))
|
keys_file := env('VAULT_UNSEAL_KEYS', clean(justfile_directory() + '/vault-unseal-keys'))
|
||||||
vault_namespace := env('VAULT_NAMESPACE', 'security')
|
vault_namespace := env('VAULT_NAMESPACE', 'security')
|
||||||
vault_pod := env('VAULT_POD', 'vault-0')
|
vault_pod := env('VAULT_POD', 'vault-0')
|
||||||
@@ -28,7 +32,7 @@ status:
|
|||||||
command -v "$cmd" > /dev/null || { echo "vault: не найден $cmd (активируй mise в каталоге репозитория)" >&2; exit 1; }
|
command -v "$cmd" > /dev/null || { echo "vault: не найден $cmd (активируй mise в каталоге репозитория)" >&2; exit 1; }
|
||||||
done
|
done
|
||||||
|
|
||||||
kubectl -n "{{ vault_namespace }}" exec -i "{{ vault_pod }}" -- vault status || true
|
kubectl -n "{{ vault_namespace }}" exec "{{ vault_pod }}" -- vault status < /dev/null || true
|
||||||
|
|
||||||
# Распечатать Vault ключами из файла.
|
# Распечатать Vault ключами из файла.
|
||||||
[doc('Распечатать Vault ключами из файла vault-unseal-keys')]
|
[doc('Распечатать Vault ключами из файла vault-unseal-keys')]
|
||||||
@@ -45,7 +49,7 @@ unseal:
|
|||||||
command -v "$cmd" > /dev/null || { echo "vault: не найден $cmd (активируй mise в каталоге репозитория)" >&2; exit 1; }
|
command -v "$cmd" > /dev/null || { echo "vault: не найден $cmd (активируй mise в каталоге репозитория)" >&2; exit 1; }
|
||||||
done
|
done
|
||||||
|
|
||||||
if ! kubectl -n "$ns" get pod "$pod" > /dev/null 2>&1; then
|
if ! kubectl -n "$ns" get pod "$pod" > /dev/null 2>&1 < /dev/null; then
|
||||||
echo "vault: под $ns/$pod недоступен — Vault не запущен или kubeconfig не тот" >&2
|
echo "vault: под $ns/$pod недоступен — Vault не запущен или kubeconfig не тот" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -69,7 +73,7 @@ unseal:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
sealed() {
|
sealed() {
|
||||||
kubectl -n "$ns" exec -i "$pod" -- vault status -format=json 2> /dev/null | jq -r '.sealed | tostring' || true
|
kubectl -n "$ns" exec "$pod" -- vault status -format=json < /dev/null 2> /dev/null | jq -r '.sealed | tostring' || true
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ "$(sealed)" == "false" ]]; then
|
if [[ "$(sealed)" == "false" ]]; then
|
||||||
@@ -84,7 +88,7 @@ unseal:
|
|||||||
|
|
||||||
used=$((used + 1))
|
used=$((used + 1))
|
||||||
echo "vault: отправляю долю $used"
|
echo "vault: отправляю долю $used"
|
||||||
kubectl -n "$ns" exec -i "$pod" -- vault operator unseal "$key" || true
|
kubectl -n "$ns" exec "$pod" -- vault operator unseal "$key" < /dev/null || true
|
||||||
|
|
||||||
if [[ "$(sealed)" == "false" ]]; then
|
if [[ "$(sealed)" == "false" ]]; then
|
||||||
echo "vault: распечатан, использовано долей: $used"
|
echo "vault: распечатан, использовано долей: $used"
|
||||||
@@ -97,4 +101,4 @@ unseal:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
kubectl -n "$ns" exec -i "$pod" -- vault status || true
|
kubectl -n "$ns" exec "$pod" -- vault status < /dev/null || true
|
||||||
|
|||||||
Reference in New Issue
Block a user