Публикация модулей в реестре
Делитесь повторно используемыми модулями Terraform между командами: версионируйте их в Git и публикуйте в общедоступном или частном реестре модулей.
«Публикация модулей в реестре» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
За пределами локальных модулей
Локальные модули находятся в папке рядом с конфигурацией. Чтобы делиться модулями между проектами и командами, опубликуйте их в реестре модулей. Тогда пользователи смогут получать их по имени и версии, как из менеджера пакетов.
Источники модулей
Аргумент source определяет, откуда Terraform получает модуль. Доступны следующие варианты:
- Локальный путь
- Репозиторий Git
- Публичный реестр Terraform
- Приватный реестр в Terraform Cloud
Использование модуля из реестра
Модули из реестра используют формат namespace/name/provider. Всегда фиксируйте версию, чтобы сборки можно было воспроизводить.
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "5.1.2"
name = "my-vpc"
cidr = "10.0.0.0/16"
}Соглашение об именовании репозиториев
Публичный реестр требует определённого имени репозитория: terraform-PROVIDER-NAME. Например, сетевой модуль для AWS должен находиться в репозитории с именем terraform-aws-network.
Стандартная структура модуля
Модуль, предназначенный для публикации, имеет предсказуемую структуру, чтобы реестр мог автоматически создать его документацию.
terraform-aws-network/
main.tf
variables.tf
outputs.tf
README.md
examples/
basic/main.tfДокументирование входных значений
У каждой переменной должны быть description и, желательно, type. Реестр автоматически преобразует их в таблицу документированных входных значений.
variable "cidr" {
type = string
description = "The CIDR block for the VPC"
default = "10.0.0.0/16"
}Управление версиями с помощью тегов Git
Реестр определяет версии модулей по тегам Git с семантическими версиями. Именно пометка выпуска тегом делает новую версию доступной пользователям.
git tag v1.0.0
git push origin v1.0.0Фиксация источника Git напрямую
Можно не использовать реестр и указать репозиторий Git по URL, зафиксировав тег с помощью параметра запроса ref.
module "network" {
source = "git::https://github.com/acme/terraform-aws-network.git?ref=v1.0.0"
cidr = "10.0.0.0/16"
}Приватные реестры
Terraform Cloud и Enterprise предоставляют приватный реестр, благодаря которому внутренние модули остаются конфиденциальными, но при этом доступны для поиска в Вашей организации с использованием того же процесса выбора имени и версии.
Ограничения семантических версий
Используйте ограничения версий для безопасного обновления. Оператор ~> разрешает повышать версии исправлений и минорные версии, но не допускает несовместимые изменения мажорной версии.
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "~> 5.1"
}Обновление версий модулей
После изменения ограничения версии выполните terraform init -upgrade, чтобы получить последнюю разрешённую версию и обновить файл блокировки.
terraform init -upgradeБыстрая проверка
Проверьте, насколько хорошо Вы понимаете управление версиями модулей.
Итоги: совместное использование модулей
Вы научились публиковать модули и использовать их:
- Правило именования репозиториев
terraform-PROVIDER-NAME. - Стандартная структура с документированными входными и выходными значениями.
- Версии в реестре определяются тегами Git.
- Ограничения версий, такие как
~>, обеспечивают безопасное обновление.
Теперь Ваши повторно используемые модули могут служить основой для каждого проекта в организации.
Часто задаваемые вопросы
Урок «Публикация модулей в реестре» бесплатный?
Да — полный текст урока «Публикация модулей в реестре» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Публикация модулей в реестре»?
Делитесь повторно используемыми модулями Terraform между командами: версионируйте их в Git и публикуйте в общедоступном или частном реестре модулей. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Публикация модулей в реестре»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Введение в модули Terraform
- Создание повторно используемых модулей
- Использование рабочих пространств для окружений
- Публикация модулей в реестре