Cue: валидация конфигурации
Как devops мне много приходиться работать с yaml-файлами для описания конфигурации различных приложений. И до сих пор валидация конфигурации заключалась в ее беглом просмотре глазами и попытке использовать в програмах. Было бы неплохо иметь возможность валидации yaml/json-конфигурации.
В очередной раз обратил внимание на cuelang и его возможность валидации json/yaml-конфигурации с помощью описания схем . Решил попробовать описать схему для prometheus-алертов.
Достаточно быстро набросал следующую схему (файл rules.cue):
#rule: {
alert: string
expr: string
for?: string
labels: {
severity: =~"info|warning|high|disaster"
service?: string
}
annotations?: {
summary: string
}
}
groups: [{
name: string
rules: [...#rule]
}]
Использовать схему можно простым запуском:
cue vet -c -E -s alerts.yaml rules.cue
Проверял путем явного создания ошибок, например дублировал символы, вместо
summary прописывал summarry, в результате чего получал следующую ошибку:
groups.0.rules.15.annotations: field not allowed: summarry:
./prod/all/rules-all.cue:14:16
./prod/all/rules-all.cue:21:13
./prod/all/rules-all.yml:150:87
Схемы описываются довольно просто, что позволяет использовать валидацию и в ci/cd процессах.