CertMaster

🏗️ Terraform Language (HCL)

Providers, Resources, Variables, Outputs, Locals, Data Sources

Terraform Associate · TF-Associate · ⏱️ 28 min · ❓ 6 вопр.

📦 Providers

Provider — работает с облаком или сервисом через API. Загружается из Terraform Registry. Блок required_providers. Версионирование провайдера: `~> 5.0` (minor и patch обновления). Несколько экземпляров провайдера — alias.

🏗️ Resources

Компонент инфраструктуры. `resource "TYPE" "NAME"`. TYPE ресурса — в формате `provider_resourcetype`. Мета-аргументы ресурса: meta-arguments: `depends_on`, `count`, `for_each`, `provider`, `lifecycle`.

📝 Variables, Outputs, Locals

Input Variables: `var.name`, блок `variable`, type, default, validation. Output Values: возврат значения в другой модуль/корневой модуль. Locals: кэш выражений внутри модуля (local.name). Приоритет переменных: env var > .tfvars > default.

🔍 Data Sources

Блок `data` — чтение существующей инфраструктуры (не созданной Terraform). Например: получение существующего VPC ID, последнего AMI ID. Обращение через `data.TYPE.NAME.attribute`.
💡 Ключевые моменты
📋 Пример кода
# Provider konfiguratsiya
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = var.region
}

# Variable
variable "region" {
  type        = string
  description = "AWS Region"
  default     = "us-east-1"
}

variable "instance_count" {
  type    = number
  default = 2
}

# Resource (with for_each)
resource "aws_instance" "web" {
  count         = var.instance_count
  ami           = data.aws_ami.ubuntu.id
  instance_type = "t3.micro"
  tags = {
    Name = "web-${count.index}"
    Env  = local.env
  }
}

# Locals
locals {
  env = "production"
}

# Data source
data "aws_ami" "ubuntu" {
  most_recent = true
  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-*-22.04-amd64-*"]
  }
  owners = ["099720109477"] # Canonical
}

# Output
output "instance_ips" {
  value = aws_instance.web[*].public_ip
}
🎯 Советы для экзамена
⚠️ Частые ошибки
🧠 Для запоминания: "VROLED" = Variables (input), Resources, Outputs, Locals, External-data (data sources), Dependencies — основные блоки HCL

Проверьте себя по теме «Terraform Language (HCL)»

Бесплатные интерактивные тесты, пробный экзамен и полные уроки — на платформе CertMaster.

Начать бесплатно →