Terraform в России

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Сейчас в связи с санкциями публичный Terraform репозиторий https://registry.terraform.io блокирует доступ из подсанкционных регионов.

Когда мы пытаемся обойти блокировки на локальных устройствах, это не представляет большой сложности. Например, включив VPN с выходом в другом регионе. Но бывают ситуации, когда включать VPN затруднительно или не целесообразно.

Я столкнулся с этим, когда перестали работать запуски terraform команд в CI/CD процессах, которые запускались в эфемерных контейнерах. Поднимать VPN в контейнере? Поднимать VPN на ноде? Выглядит как overengineering.

Попытка 1

Погуглив, нашёл в интернете сервис, реализующий Provider Network Mirror Protocol. Большой плюс в простоте использования. Достаточно было в домашней директории создать файл .terraformrc:

provider_installation {
    network_mirror {
        url = "https://provider-registry-protocol-name/"
    }
}

и всё работает!

Но с этим подходом было две проблемы:

  • а что там внутри? Исходного кода не вижу. А не внедрят ли мне что-то нехорошее в скачиваемые пакеты?

  • а что если оно в один прекрасный момент умрёт? Все мои процессы встанут.

Риски принял, работал с этим подходом.

Но вот в один прекрасный день всё действительно умерло: закончилась аренда домена того сервиса (не буду уточнять какого). И всё у меня сломалось.

Попытка 2

Нужно было срочно всё завести обратно, завтра отпуск, а ничего не работает.

Первыми на ум пришли прокси и обратный прокси. Обратный прокси проще делается, начал с него. Завёл элементарный nginx с простым proxy_pass в неподсанкционном регионе, оттопырил его в свою сеть и поменял в .terraformrc адрес на свой.

Сначала долго не понимал, почему всё не работает. Потом с удивлением обнаружил, что API Provider Network Mirror Protocol вообще не похож на API самого репозитория (Provider Registry Protocol). Зачем они так сделали — не понятно. Нужен сервис, который будет мапить один API в другой. В интернете такого не нашёл в свободном доступе. Решил написать свой в опенсорс.

Попытка 3. Решение

Итак, написал опенсорс сервис, который реализует протокол Provider Network Mirror Protocol. Любой желающий может его развернуть в своей инфраструктуре и не сомневаться во внутренностях.

Ссылка на исходный код https://github.com/jonasasx/terraform-registry-mirror.

Кому не охота или нет возможности разворачивать его самостоятельно, может воспользоваться моей инсталляцией: https://terraform-registry-mirror.ru/. Пока она запущена в качестве прототипа (не рассчитана на большую нагрузку). Но если увижу к ней интерес, то подготовим к нагрузкам.

Для работы достаточно создать файл в домашней директории .terraformrc:

provider_installation {
    network_mirror {
        url = "https://terraform-registry-mirror.ru/"
    }
}

Это можно легко сделать и в любой CI/CD джобе.

Кому интересно помочь с проектом: добро пожаловать, заводите тикеты, присылайте пулл реквесты, оставляйте комментарии.

Спасибо за внимание!

PS связь со мной: https://t.me/jonasasx

Источник: https://habr.com/ru/articles/807563/


Интересные статьи

Интересные статьи

С 11 по 27 марта «Солар» принимает заявки на стажировку в центре противодействия кибератакам Solar JSOC. Обучение проходит в режиме онлайн два раза в неделю с к...
В начале каждого года мы на Хабр Карьере подводим итоги предыдущего для компаний: просим специалистов справедливо оценить своих прошлых и нынешних работодателей. Дальше собираем оценки и составляем ре...
Продолжим тему из публикации "Как поместить весь мир в обычный ноутбук: PostgreSQL и OpenStreetMap".Сегодня визуализируем 15 мест где в России больше всего зданий. В этом нам поможет мой проект openst...
Популярная в России мошенническая схема со лже-свиданиями — Fake Date в этом году вышла за пределы страны. Аферисты активно осваивают новые рынки: страны СНГ и Европы, а также США, Арабские Эмираты, А...
Стратегическое сотрудничество Microsoft и ВОИ поможет людям с инвалидностью освоить необходимые для жизни цифровые инструменты, сделает новые технологии доступнее и усилит просвещение в обла...