Предоставление репозитория AWS Elastic Container Registry Repository с помощью Terraform

Автоматизация очень важна в разработке, она устраняет/сокращает человеческие ошибки при ручном обеспечении. Автоматизация позволяет командам сосредоточиться на работе, которая добавляет ценность для бизнеса, что, в свою очередь, увеличивает доход.
В этой статье я расскажу вам о том, как настроить репозиторий реестра эластичных контейнеров AWS с помощью terraform.

Термины и технологии
Terraform Terraform — это инструмент iac (infrastructure as code) с открытым исходным кодом, который используется для обеспечения, изменения и улучшения инфраструктуры в любой среде. Чтобы прочитать больше о terraform, посетите здесь

Конфигурация бэкенда Terraform: Бэкенд terraform определяет, где terraform хранит свои файлы данных состояния.

Провайдер terraform: В terraform инфраструктура создается на базе публичных облачных провайдеров, таких как amazon web services, google cloud, azure и др. Блок provider используется для указания облачного провайдера, которого вы хотите использовать, и в этом учебнике мы будем использовать amazon web service.

Предварительные условия:

  • Скачайте и установите AWS CLI, чтобы вы могли взаимодействовать с сервисами aws из интерфейса командной строки.
  • Настройте учетные данные AWS через cli с помощью команды aws configure. Для этого вам нужно создать пользователя с помощью IAM на AWS.
  • Скачайте и установите terraform

Структура проекта
Terraform-ecr

  • Backend.tf
  • Main.tf
  • Provider.tf
  • Variable.auto.tfvars
  • Variables.tf

Конфигурация проекта
Первое, что мы сделаем, это создадим s3 bucket, в котором будут храниться файлы состояния. Затем добавим блок конфигурации terraform, который будет хранить файлы данных состояния для этого проекта в созданном s3 bucket.

Откройте файл backend.tf и добавьте следующую строку кода

terraform {
 backend "s3" {
   bucket = "myawspracticebucket12"
   key = "~/.aws/config"
   region = "us-east-1"
 }
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Строка 1: Это блок terraform, необходимый для создания конфигурации нашего бэкенда
Строка 2: описывает блок backend, который содержит информацию о том, где будет храниться backend
Строка 3: Имя ведра, которое мы создали
Строка 4: Путь к файлу учетных данных. Он доступен при выполнении aws configure. Вы также можете решить использовать другую учетную запись. Все, что вам нужно сделать, это указать путь.
Строка 5: Регион ведра s3
Прежде чем двигаться дальше, давайте инициализируем бэкенд с помощью терминала, чтобы убедиться, что мы не совершили никакой ошибки, используя эту команду:

Это будет результат, если все сделано правильно.

Если у вас его нет, проверьте путь к файлу учетных данных, а также имя вашего ведра, если они верны.

Шаг 2: В этом шаге я добавляю провайдера terraform, который называется «hashicorp/aws» и его версию, я также добавил регион aws, объявленный в файле variable.tf Откройте файл provider.tf и добавьте следующие строки кода

terraform {
 required_providers {
     aws = {
         source = "hashicorp/aws"
         version = "~>4.19.0"
     }
 }
}

provider "aws" {
 region = var.region
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Шаг 3: В этом шаге я добавил блок ресурсов, который создает реестр эластичных контейнеров (ecr) на aws. Откройте файл main.tf и добавьте следующие строки кода

resource "aws_ecr_repository" "ecr_repo" {
 name                 = var.ecr
 image_tag_mutability = "IMMUTABLE"

 image_scanning_configuration {
   scan_on_push = true
 }
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Строка 1: Это блок ресурсов, который содержит информацию, используемую при создании реестра эластичных контейнеров.
Строка 2: Имя репозитория, хранящееся в файле переменных
Строка 3: Это предотвращает перезапись тегов изображений
Строка 6: Сканирует изображения на наличие уязвимостей

Шаг 3: В этом шаге я объявлю переменные, использованные в предыдущих файлах, такие как регион и имя хранилища. Откройте файл variables.tf и добавьте следующий код

variable "region" {
 description = "AWS region"
 type = string
}

variable "ecr" {
 description = "Repository name"
 type = string
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Вы заметите, что у нас нет значения по умолчанию в файле variables.tf, значения будут храниться в файле variables.auto.tfvars.
Откройте файл variables.auto.tfvars и добавьте следующий код

region = "us-east-1"
ecr = "web"
Вход в полноэкранный режим Выйти из полноэкранного режима

Шаг 4: В этом шаге я использую команду terraform для разворачивания нашей инфраструктуры

Terraform plan для просмотра ресурсов, которые мы создаем

Terraform apply для раскрутки ресурса

Давайте перейдем в консоль, чтобы посмотреть, что мы создали

Репозиторий создан

Вы успешно создали репозиторий реестра эластичных контейнеров и можете смело публиковать в нем свои образы контейнеров.

Спасибо, что дочитали до конца. Пожалуйста, свяжитесь со мной в разделе комментариев, если у вас есть какие-либо вопросы, или на linkedin и twitter, чтобы узнать о способах улучшения.

До следующего раза, будьте здоровы.

Оцените статью
devanswers.ru
Добавить комментарий