Перейти к содержимому

core.augur

Read-probe живого доступа к внешней системе (Vault / Prometheus / ELK) через брокер Augur. Soul-side.

В отличие от обычной модели (всё внешнее резолвится сервером до отправки шага на хост), core.augur.fetch запрашивает значение в момент применения на хосте — для случаев, которые нельзя отдать заранее: короткоживущий dynamic-secret, live-метрика как условие шага, чтение из ELK в ходе прогона. Запрос идёт через Keeper — внешний credential на хост не попадает.

Verb-модуль: единственное состояние — fetch. changed=false всегда, конструктивно.

State (verb)Назначениеchanged
fetchЗапросить значение из внешней системы у брокера Augur в момент apply.false всегда (read-probe не меняет хост).
ParamТипОбяз. / дефолтОписание
omenstringrequiredИмя внешней системы (Omen), к которой запрашивается доступ.
querystringrequiredЗапрос: KV-путь (Vault, в т.ч. #field-проекция), PromQL (Prometheus), index-query (ELK). Сверяется против allow-list на Keeper-е.

Шаг падает (значение не отдаётся) при любом из:

  • denied — авторизация Keeper-а отклонила (Omen не найден / хост не имеет доступа / query вне allow-list);
  • error — сбой исполнения на Keeper-е / внешней системе (недоступна);
  • default-deny — отсутствие явного ok трактуется как запрет;
  • брокер недоступен в прогоне (push-режим без активной сессии);
  • таймаут / разрыв до ответа.

Сообщение об ошибке несёт имя Omen-а для диагностики, но не query и не само значение.

# Live-чтение dynamic-secret в момент apply (данные приходят через Keeper).
- name: Fetch DB credentials at apply time
module: core.augur.fetch
register: db_creds
params:
omen: vault-prod
query: database/creds/app-role#password
- name: Write app config
module: core.file.rendered
params:
path: /etc/app/config.yml
template: app-config.tmpl
vars:
db_password: "${ register.db_creds.value }"
  • Master-credential на хост никогда не попадает — хост получает только значение inline через Keeper.
  • Авторизация — на Keeper-е, не на хосте. Хост шлёт запрос; Keeper сверяет идентичность хоста (из mTLS-сертификата) → права → allow-list. Любая непройденная проверка → отказ без значения. Default-deny: отсутствие явного ok никогда не «продолжает».
  • Минимизация секрета в диагностике — в сообщения об ошибке не уходят ни query, ни значение, ни токен.
  • Output: при okinline_data как есть: скаляр заворачивается в { "value": <scalar> }, map — натуральный объект. Проекцию #field делает Keeper — хост получает уже спроецированное значение.