Поставщики и ресурсы
Разберитесь, как Terraform взаимодействует с различными облачными поставщиками и поставщиками служб, а также как определять отдельные компоненты инфраструктуры в качестве ресурсов.
«Поставщики и ресурсы» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Основные строительные блоки Terraform
Добро пожаловать! Terraform помогает управлять облачной инфраструктурой с помощью кода. Но как именно он взаимодействует с облачными провайдерами и определяет, что Вы хотите создать?
В этом уроке представлены два фундаментальных понятия: провайдеры и ресурсы. Это базовые строительные блоки любой конфигурации Terraform, необходимые для понимания принципов работы IaC.
Что такое провайдеры Terraform?
Представьте провайдер как плагин, который позволяет Terraform взаимодействовать с внешним сервисом или API. Это может быть облачный провайдер, например AWS, Azure или Google Cloud, либо такой сервис, как GitHub, Kubernetes или Datadog.
- Каждый провайдер понимает специфические вызовы API, необходимые для его сервиса.
- Он переводит желаемую инфраструктуру в действия, которые может выполнить сервис.
- Вы настраиваете провайдеры, чтобы указать Terraform, какой сервис использовать и как проходить аутентификацию.
Объявление блока провайдера
Чтобы использовать провайдер, объявите его в файлах конфигурации Terraform с помощью блока provider. Этот блок задаёт имя провайдера и необходимые ему параметры конфигурации, например регион для облачного провайдера.
Вот распространённый пример для провайдера AWS:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}Источник и версия провайдера
Раздел required_providers блока terraform имеет большое значение. Он сообщает Terraform, где найти провайдер (его source) и какую version использовать. Это обеспечивает единообразие и предотвращает неожиданное поведение.
- Источник: задаёт путь к реестру провайдера (например,
hashicorp/aws). - Версия: фиксирует версию провайдера и предотвращает несовместимые изменения в новых выпусках.
- Затем блок
provider "aws"настраивает конкретные параметры, напримерregionAWS для всех ресурсов, которыми управляет этот провайдер.
Что такое ресурсы Terraform?
Ресурс — это блок, описывающий отдельный компонент Вашей инфраструктуры. Это может быть виртуальная машина (VM), сеть, база данных, bucket хранилища или даже учётная запись пользователя.
- Каждым типом ресурса управляет определённый провайдер (например, ресурс
aws_s3_bucketуправляется провайдером AWS). - Вы объявляете желаемое состояние ресурса, а Terraform добивается этого состояния.
- У ресурсов есть аргументы, определяющие их свойства (например, размер, имя и расположение).
Объявление блока ресурса
Ресурс определяется с помощью блока resource. Для этого блока требуются две строки:
- Тип ресурса (например,
aws_s3_bucket). - Локальное имя (например,
my_first_bucket), уникальное в пределах конфигурации.
Тип сообщает Terraform, что это за компонент инфраструктуры, а имя предоставляет уникальный идентификатор, по которому Terraform отслеживает ресурс.
resource "aws_s3_bucket" "my_first_bucket" {
# Arguments go here to define its properties
}resource "aws_s3_bucket" "my_first_bucket" {
# Arguments go here to define its properties
}Аргументы и свойства ресурса
Внутри блока resource указываются аргументы. Это пары «ключ—значение», определяющие свойства и конфигурацию компонента инфраструктуры. Доступные аргументы зависят от типа ресурса и управляющего им провайдера.
- Для bucket AWS S3 аргументы могут включать
bucket(уникальное имя),acl(список управления доступом) илиtagsдля маркировки. - Terraform использует эти аргументы, чтобы создать или обновить ресурс и привести его к желаемому состоянию в облаке.
Объединяем всё: провайдер и ресурс
Вот простая полная конфигурация Terraform. Она объявляет провайдер AWS, а затем использует его для создания базового bucket S3. Для начала определения инфраструктуры достаточно этого единственного файла!
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}
resource "aws_s3_bucket" "my_unique_bucket" {
bucket = "my-coddykit-demo-bucket-12345" # Must be globally unique!
acl = "private"
tags = {
Environment = "Development"
Project = "CoddyKit"
}
}terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-1"
}
resource "aws_s3_bucket" "my_unique_bucket" {
bucket = "my-coddykit-demo-bucket-12345" # Must be globally unique!
acl = "private"
tags = {
Environment = "Development"
Project = "CoddyKit"
}
}Связь с рабочим процессом Terraform
При выполнении команд Terraform провайдеры и ресурсы играют ключевые роли:
terraform init: скачивает необходимые плагины провайдеров.terraform plan: использует провайдер для связи с облачным API и определения необходимых изменений, чтобы достичь желаемого состояния ресурса.terraform apply: поручает провайдеру внести эти изменения в реальную облачную инфраструктуру.
Это основные точки взаимодействия при управлении инфраструктурой.
Быстрая проверка: роль провайдера
Вы узнали о провайдерах и ресурсах. Давайте проверим, умеете ли Вы правильно определять их роли.
Итоги: провайдеры и ресурсы
Отличная работа! В этом уроке Вы получили базовое представление о двух важнейших понятиях Terraform:
- Провайдеры: необходимые плагины, позволяющие Terraform взаимодействовать с различными облачными сервисами и API. Вы настраиваете их, указывая, какой сервис использовать и как проходить аутентификацию.
- Ресурсы: отдельные компоненты инфраструктуры, которые Вы объявляете в конфигурации. У них есть типы и аргументы, определяющие их желаемое состояние.
Эти два элемента работают вместе и позволяют эффективно описывать инфраструктуру и управлять ею как кодом!
Часто задаваемые вопросы
Урок «Поставщики и ресурсы» бесплатный?
Да — полный текст урока «Поставщики и ресурсы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Поставщики и ресурсы»?
Разберитесь, как Terraform взаимодействует с различными облачными поставщиками и поставщиками служб, а также как определять отдельные компоненты инфраструктуры в качестве ресурсов. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Поставщики и ресурсы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Поставщики и ресурсы
- Переменные и выходные значения
- Основы управления состоянием
- Модули и повторное использование кода