Публикация модулей в реестре
Делитесь повторно используемыми модулями Terraform между командами: версионируйте их в Git и публикуйте в общедоступном или частном реестре модулей.
«Публикация модулей в реестре» — бесплатный урок Terraform Infrastructure as Code на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Terraform Infrastructure as Code, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Terraform Infrastructure as Code содержит 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) и разблокировать остальной курс Terraform Infrastructure as Code, подпишись на CoddyKit PRO. Курс Terraform Infrastructure as Code содержит 4 уроков всего.
Чему я научусь в уроке «Публикация модулей в реестре»?
Делитесь повторно используемыми модулями Terraform между командами: версионируйте их в Git и публикуйте в общедоступном или частном реестре модулей. Ты практикуешь Terraform Infrastructure as Code с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Terraform Infrastructure as Code?
Предыдущий опыт не требуется. Terraform Infrastructure as Code на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Публикация модулей в реестре»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Terraform Infrastructure as Code?
Да. Каждый урок Terraform Infrastructure as Code включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Введение в модули Terraform
- Создание повторно используемых модулей
- Использование рабочих пространств для окружений
- Публикация модулей в реестре