Yandex Cloud использует квоты для мягкого контроля ресурсов. Квоты можно легко увеличить через специальную форму или техническую поддержку. Однако, очень часто бывает, что о необходимости увеличить квоты мы узнаем поздно, например, когда падает джоба с terraform. Это раздражает, а в некоторых случаях даже может сломать стейт и принести ненужные проблемы.
Не так давно YC добавили возможность получить значения квот через API. И сразу же зачесались руки, поскольку такие проблемы встречались несколько раз. Как результат получилась небольшая утилита ycquoter, которая вычитывает построенный план terraform, получает значения из API по используемым квотам и проверяет влезут ли новые ресурсы без ошибок.
Мы в sports.ru начали использовать эту утилиту в Gitlab pipeline, который раскатывает новые ресурсы в Облако. Теперь появилась дополнительная джоба, которая падает, если новые ресурсы не вписываются в заказанные квоты.
Для работы утилиты потребуется выполнить несколько действий:
- Создать сервисный аккаунта с правами - quota-manager.viewerи дополнительно дать ему права на уровне cloud
- Создать статичный ключ и сохранить его в виде файла 
- Добавить в джобу, которая будет запускать скрипт две переменные YCQOUTER_SA_FILE_PATH и YCQOUTER_CLOUD_UID, указав свои данные. 
- Выводим план в файл - terraform plan -out=plan.cache
- Сгенерировать план в виде json, командой - terraform show -json plan.cache > fullplan.json
- Далее передать план в утилиту - cat fullplan.json | ycquoter
- Получить сводную таблицу с изменениями, примерно такого вида 

Если добавить скрипт в пайплайн, то можно забыть про неожиданные ошибки и беготню с поднятием квот. Кроме того, можно превентивно увеличить квоты, которые подходят к лимиту.
На данный момент добавлены не все квоты и ресурсы, отслеживаются следующие:
- compute 
- VPC 
- S3 
- ALB 
- NLB 
- K8s 
По запросам список будет дополняться. Кроме того, в планах есть добавить подсветку квот которые близки к исчерпанию и подсчет стоимости новых ресурсов.
 
          