Ansible Pull: безопасность, секреты и SSH-less
Ansible Pull: безопасность, секреты и SSH-less
Как хранить секреты и работать без SSH на автономных узлах.
Подход
- Секреты: Vault/age/sops; ключи вне репозитория
- Pull без SSH: webhook-triggered или таймеры; доступ только к Git
- Least privilege для пользователя ansible-pull
- Проверка целостности: git verify-tag/commit
Готовые сниппеты
sops+ansible (age):
- name: Decrypt secrets
community.sops.decrypt:
path: secrets.yaml
register: secrets
wrapper с валидацией ревизии:
#!/usr/bin/env bash
set -euo pipefail
set -o pipefail
REPO=»{2:-HEAD}»
shopt -s nullglob
if ! git -C «REF» 2>/dev/null && ! git -C «REF» 2>/dev/null; then
echo «Invalid signature» >&2
exit 1
fi
/usr/bin/ansible-pull -U «REF»
Sandbox (пример):
[Service]
LockPersonality=yes
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
SystemCallFilter=~@mount @debug
Чек‑лист
- секреты зашифрованы, ключи вне репозитория
- нет SSH-доступа для ansible-pull
- verify-tag/commit и подпись коммитов
- least privilege + sandbox
Рубрики: Автоматизация → Ansible → Ansible Pull