🏗️ Built-in Functions & Expressions
String, numeric, collection, encoding functions va type constraints
🔧 String Functions
`format("Hello, %s!", var.name)` — string interpolation. `tostring()`, `lower()`, `upper()`, `trimspace()`, `replace()`, `split()`, `join()`. `substr(str, offset, length)` — substring. Terraform da string interpolation: `"${var.env}-server"`.
📋 Collection Functions
`length(list)` — element soni. `toset()` — listni set ga. `tolist()` — sett ni list ga. `flatten([[a,b],[c]])` → `[a,b,c]`. `distinct()` — takrorlanishlarni olib tashlash. `merge(map1, map2)` — maplarni birlashtirish. `keys()`, `values()` — map elements. `lookup(map, key, default)` — xavfsiz qidirish.
🔢 Numeric & Type Functions
`max(a,b,c)`, `min(a,b,c)`, `abs(n)`, `ceil(n)`, `floor(n)`. `tonumber()`, `tobool()`. Type constraints: `string`, `number`, `bool`, `list(type)`, `set(type)`, `map(type)`, `object({key=type})`, `tuple([type,...])`. `any` — istalgan tip.
🧩 Conditional & Dynamic Expressions
Ternary: `condition ? true_val : false_val`. For expression: `[for s in var.list : upper(s)]`. Map for: `{for k, v in var.map : k => v * 2}`. `for_each` + `for` kombinatsiya. Splat operator: `aws_instance.web[*].id` — list dan attribute olish.
💡 Asosiy nuqtalar
- join(",", list) — list dan string yaratish
- split(",", string) — string dan list yaratish
- merge(map1, map2) — maplarni birlashtirish
- for expression — list/map transformation
- Ternary: condition ? a : b
- lookup(map, key, default) — xavfsiz map qidirish
📋 Kod misoli
# String functions
locals {
env = "production"
prefix = format("%s-%s", var.project, local.env)
tags = join(", ", ["web", "api", "db"])
parts = split("-", "us-east-1") # ["us","east","1"]
}
# Collection functions
variable "instance_names" {
default = ["web", "api", "api", "db"]
}
locals {
unique_names = toset(var.instance_names) # {"api","db","web"}
upper_names = [for n in var.instance_names : upper(n)]
name_map = {for n in toset(var.instance_names) : n => "t3.micro"}
}
# Conditional
locals {
instance_type = var.env == "prod" ? "t3.large" : "t3.micro"
}
# Lookup with default
locals {
ami = lookup(var.ami_map, var.region, "ami-default")
🎯 Imtihon maslahatlari
- `toset(["a","b","a"])` → `{"a","b"}` — takrorlanish yo'q qiladi (for_each uchun zarur)
- `flatten()` — nested list ni bitta flat list ga aylantiradi
- For expression list: `[for x in list : x if condition]` — filter bilan
- Splat `[*]` — faqat list uchun. `for` expression — har tur uchun
- `contains(list, value)` — element borligini tekshirish (true/false)
⚠️ Ko'p adashadigan
- Set da order kafolatlanadi deb o'ylash — set orderless. for_each da map ishlatish afzal
- `merge()` conflict bo'lganda oxirgi map g'alaba qiladi — tartibga e'tibor bering
- Ternary expression da ikkala branch ham evaluate qilinadi — null reference xatosi berishi mumkin
🧠 Eslab qolish: "SCNF" = String (format/join/split), Collection (merge/flatten/toset), Numeric (max/min/ceil), For-expression — Terraform 4 asosiy function kategoriyasi
Built-in Functions & Expressions bo'yicha o'zingizni sinab ko'ring
Bepul interaktiv quiz, mock imtihon va to'liq darslar — CertMaster platformasida.
Bepul boshlash →