0Pricing
Terraform Infrastructure as Code · Урок

Поставщики и ресурсы

Разберитесь, как Terraform взаимодействует с различными облачными поставщиками и поставщиками служб, а также как определять отдельные компоненты инфраструктуры в качестве ресурсов.

«Поставщики и ресурсы» — бесплатный урок Terraform Infrastructure as Code на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Terraform Infrastructure as Code, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Terraform Infrastructure as Code содержит 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" настраивает конкретные параметры, например region AWS для всех ресурсов, которыми управляет этот провайдер.

Что такое ресурсы 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) и разблокировать остальной курс Terraform Infrastructure as Code, подпишись на CoddyKit PRO. Курс Terraform Infrastructure as Code содержит 4 уроков всего.

Чему я научусь в уроке «Поставщики и ресурсы»?

Разберитесь, как Terraform взаимодействует с различными облачными поставщиками и поставщиками служб, а также как определять отдельные компоненты инфраструктуры в качестве ресурсов. Ты практикуешь Terraform Infrastructure as Code с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Terraform Infrastructure as Code?

Предыдущий опыт не требуется. Terraform Infrastructure as Code на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Поставщики и ресурсы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Terraform Infrastructure as Code?

Да. Каждый урок Terraform Infrastructure as Code включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Поставщики и ресурсы
  2. Переменные и выходные значения
  3. Основы управления состоянием
  4. Модули и повторное использование кода
← Назад к Terraform Infrastructure as Code