0Pricing
DevOps Bootcamp · Урок

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

Разберитесь, как 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" настраивает конкретные параметры, например 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) и разблокировать остальной курс 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 — локальная установка не требуется.

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

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