Автоматизация очень важна в разработке, она устраняет/сокращает человеческие ошибки при ручном обеспечении. Автоматизация позволяет командам сосредоточиться на работе, которая добавляет ценность для бизнеса, что, в свою очередь, увеличивает доход.
В этой статье я расскажу вам о том, как настроить репозиторий реестра эластичных контейнеров 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, чтобы узнать о способах улучшения.
До следующего раза, будьте здоровы.