В документации Yandex Cloud есть 2 полезные статьи на тему начала работы с интерфейсом командной строки и Terraform. Приведу обе, так как у вас может быть как Windows или Linux, так и MacOS
https://yandex.cloud/ru/docs/cli/quickstart
https://yandex.cloud/ru/docs/tutorials/infrastructure-management/terraform-quickstart
После установки Yandex Cloud CLI и Terraform давайте представим, что у нас есть задача создать виртуальные машины для установки Kubernetes кластера — 1 master и 4 worker ноды.
Создадим 2 файла
nano main.tf
terraform {
required_providers {
yandex = {
source = "yandex-cloud/yandex"
}
}
required_version = ">= 0.13"
}
provider "yandex" {
token = var.yandex_token
folder_id = var.yandex_folder_id
cloud_id = "xxx"
zone = "ru-central1-a"
}
data "yandex_compute_image" "ubuntu" {
family = "ubuntu-2004-lts"
}
resource "yandex_compute_instance" "master" {
name = "master"
zone = "ru-central1-a"
boot_disk {
initialize_params {
image_id = data.yandex_compute_image.ubuntu.id
}
}
network_interface {
subnet_id = var.subnet_id
nat = true
ipv6 = false
}
metadata = {
ssh-keys = "ubuntu:${file("~/.ssh/id_rsa.pub")}"
}
resources {
cores = 2
memory = 4
}
}
resource "yandex_compute_instance" "worker" {
count = 4
name = "worker-${count.index}"
zone = "ru-central1-a"
boot_disk {
initialize_params {
image_id = data.yandex_compute_image.ubuntu.id
}
}
network_interface {
subnet_id = var.subnet_id
nat = true
ipv6 = false
}
metadata = {
ssh-keys = "ubuntu:${file("~/.ssh/id_rsa.pub")}"
}
resources {
cores = 2
memory = 2
}
}
resource "yandex_vpc_network" "network" {
name = "network"
}
resource "yandex_vpc_subnet" "subnet" {
name = "subnet"
zone = "ru-central1-a"
network_id = yandex_vpc_network.network.id
v4_cidr_blocks = ["10.0.1.0/24"]
}
output "master_ip" {
value = yandex_compute_instance.master.network_interface.0.ip_address
}
output "worker_ips" {
value = [for instance in yandex_compute_instance.worker : instance.network_interface.0.ip_address]
}
nano variables.tf
variable "yandex_token" {
type = string
default = "xxx"
}
variable "yandex_folder_id" {
type = string
default = "xxx"
}
variable "network_id" {
type = string
default = "xxx"
}
variable "subnet_id" {
type = string
default = "xxx"
}
variable "service_account_id" {
type = string
default = "xxx"
}
Вместо xxx соответственно ваши значения
Теперь запустим
terraform init
terraform plan
terraform apply
// вводим yes
Ждем и затем проверяем

Из полезных команд стоит отметить
terraform validate
Из возможных ошибок, если вы точно уверены, что конфигурация в порядке, обратите внимание на доступность зеркала от Yandex Cloud и блокировки со стороны HashiCorp.
Для того, чтобы уничтожить запущенные ресурсы
terraform destroy
// вводим yes
Как видите, с Terraform разворачивать инфраструктуру становится гораздо легче.
Конечно, это очень простой пример, но для базового понимания того, зачем и почему нужно использовать Terraform его вполне хватит.