В начале лета я опубликовал статью Маленькая утилита для контроля квот в Yandex Cloud и планировал добавить помимо контроля за квотами еще и подсчет стоимости добавляемых ресурсов.
Вот наконец дошли руки до этого обновления. А вместе с подсчетом стоимости новых ресурсов появилась необходимость отслеживать лейблы, что стало дополнительной фичей утилиты. Давайте расскажу о всех функциях по порядку и приведу несколько примеров использования.
Квоты
В плане квот больших изменений нет, утилита по-прежнему читает план, суммирует все изменения и через API проверяет, достаточно ли уже имеющихся квот. Небольшое нововведение - теперь, если упираемся в квоты, утилита завершится с кодом 1, а значит завалит джобу в pipeline и не даст идти дальше, пока не будут увеличены квоты в Облаке.

Стоимость
Цена, которую придется заплатить за заказанные ресурсы, волнует каждого пользователя Yandex Cloud, поэтому данный функционал и был добавлен. Стоимость рассчитывается на основание terraform plan
. Утилита принимает план на вход и подсчитывает добавленные и удаленные ресурсы. Далее идет обращение в API Облака, чтобы достать актуальные цены по каждому SKU, и, как результат, мы получаем таблицу со стоимостью и общий итог. Разбивка идет по типу ресурса и его составляющих. К примеру, у ВМ это vCPU, RAM и диск.

Лейблы
В статьях и новостях все чаще мелькает новое понятие - FinOps. Эта методология нацелена на управление финансами в Облаке. И если вы немного касались этой темы, то уже знаете, что базой для первого и последующих этапов внедрения являются лейблы. Общая идея заключается в том, чтобы каждый ресурс получил набор лейблов, которые позволят определить затраты по разным срезам: отделы, команды, сервисы и прочие.

И естественно, чтобы упростить внедрение, требуется автоматизация, и ycquoter теперь может помочь в этом. Утилита просмотрит ресурсы и сгенерирует две таблицы:
- Ресурсы без лейблов. Сюда попадут все ресурсы, у которых совсем отсутствуют теги. Их стоит проанализировать и обработать в первую очередь.
- Ресурсы, у которых не хватает отдельных лейблов. Через переменную можно указать список обязательных тегов и, если какие-то отсутствуют, это будет видно в таблице.
Проверка идет по плану, поэтому уже имеющиеся ресурсы никак не будут обработаны. Однако, утилита позволит не допустить отсутствие лейблов в новых ресурсах.
Артефакты
У каждой компании свои требования, свои процессы, поэтому для их реализации была добавлена функция для генерации артефакта. В нем собраны все данные в виде JSON. С его помощью можно настроить дополнительные проверки. Вот какие кейсы я вижу:
- Отклонение МР, если стоимость новых ресурсов превышает какой-то порог для каждой папки.
- Уведомлять, если в pipeline появляются ресурсы без лейблов или напротив имеются лейблы из стоп-листа.
- Сохраненные артефакты можно использовать как историю с изменениями.
- Автоматическое генерирование сообщения или МР-комментария, где будут указаны все изменения: количество новых ресурсов, стоимость, наличие лейблов и прочее.
Надеюсь, YCqouter поможет другим компаниям взять под контроль Облачные ресурсы и начать потихоньку внедрять FinOps. Если у вас есть какие-то предложения по улучшению, то с радостью постараюсь их реализовать.