Быстрый старт
Чтобы начать работу с Terraform:
1. Подготовьте окружение
Заголовок раздела «1. Подготовьте окружение»- Зарегистрируйтесь в MWS Cloud Platform.
- Убедитесь, что вы приглашены в организацию.
- Создайте новый проект или выберите существующий.
- Создайте сервисный аккаунт и назначьте ему роль
editorна проект.
2. Получите аутентификационные данные
Заголовок раздела «2. Получите аутентификационные данные»- Создайте авторизованный ключ для сервисного аккаунта.
- Скачайте и сохраните файл с авторизованным ключом.
3. Настройте провайдер
Заголовок раздела «3. Настройте провайдер»Создайте файл конфигурации Terraform CLI:
- Linux, MacOS
- Windows
bash touch ~/.terraformrcВ созданный файл добавьте следующий блок:
hcl provider_installation {network_mirror {url = "https://storage.mwsapis.ru/mws-terraform/",include = ["registry.terraform.io/mws-cloud/*", "registry.opentofu.org/mws-cloud/*"]}direct {exclude = ["registry.terraform.io/mws-cloud/*", "registry.opentofu.org/mws-cloud/*"]}}Создайте директорию для хранения конфигурационных файлов Terraform — например,
terraform-config.Внутри этой директории создайте файл
main.tfи добавьте в него следующий блок:hcl terraform {required_providers {mws = {source = "mws-cloud/mws"}}required_version = ">= 1.11"}provider "mws" {service_account_authorized_key_path = "<путь к файлу с авторизованным ключом>"project = "my-project" # имя проектаzone = "ru-central1-a" # зона доступности}Инициализируйте Terraform:
bash terraform init
4. Подготовьте план инфраструктуры и создайте ресурсы
Заголовок раздела «4. Подготовьте план инфраструктуры и создайте ресурсы»В примере описано создание конфигурационного файла Terraform, с помощью которого будут созданы:
- Сеть
mynetwork. - Подсеть
mysubnetи CIDR192.168.0.0/16. - Виртуальная машина
myvmс характеристиками: 2 vCPU, 4ГБ RAM, диск размером в 10 ГБ и ОС Ubuntu 22.04. Она получит внутренний IP-адрес из подсетиmysubnet. - Правило файрвола
myrule, которое разрешит доступ к виртуальной машине по SSH.
Добавьте в файл
main.tfописание сети и подсети:hcl resource "mws_vpc_network" "network" {network = "mynetwork" # имя сети}resource "mws_vpc_subnet" "subnet" {subnet = "mysubnet" # имя подсетиnetwork = mws_vpc_network.network.network # ссылка на сетьcidr = "192.168.0.0/16" # СIDR}Добавьте в файл
main.tfописание виртуальной машины:hcl data "mws_compute_image" "image" {image = "mws-ubuntu-2204-lts-v20250529"project = "mws-ubuntu"}resource "mws_vpc_address" "vm_primary_network_interface_address" {network = mws_vpc_network.network.networksubnet = mws_vpc_subnet.subnet.metadata.idaddress = "my-test-vm-primary-network-interface-address"}resource "mws_vpc_external_address" "vm_external_address" {external_address = "myvm-external-address"}resource "mws_compute_disk" "disk" {disk = "mydisk"disk_type = "diskTypes/nbs-pl2"iops = 1000size = "10GB"source = {image = data.mws_compute_image.image.metadata.id}}resource "mws_compute_virtual_machine" "vm" {virtual_machine = "myvm"vm_type = "vmTypes/gen-2-8"hardware = {power = "ON"graceful_shutdown_timeout = "1m 30s"}os = {hostname = "my"local_domain = "vm"metadata = {attributes = {user-data = <<-EOF#cloud-configusers:- name: myusergroups: sudoshell: /bin/bashsudo: 'ALL=(ALL) NOPASSWD:ALL'ssh_authorized_keys:- ssh-ed25519 AAAAC4YzaC2lDDI1NFE5FFFFIJXzfUIPxeQW+snH3LYn1t++5bdEzdfd+Mdj0h99Ii20 myuser@mycomputerEOF}}}storage = {disks = [{name = "boot"boot = truedisk = {ref = mws_compute_disk.disk.metadata.id}}]}network = {network_interfaces = [{name = "my-test-vm-network-interface-primary"primary = trueaddresses = [{address = {ref = mws_vpc_address.vm_primary_network_interface_address.metadata.id}one_to_one_nat = {external = {address = {ref = mws_vpc_external_address.vm_external_address.metadata.id}}}}]}]}}Добавьте в файл
main.tfописание правила файрвола, которое разрешит доступ к созданной ВМ по SSH:hcl resource "mws_vpc_firewall_rule" "firewall_rule" {metadata = {display_name = "Allow SSH"}firewall_rule = "myrule"network = mws_vpc_network.network.networkpriority = 1000direction = "INGRESS"action = "ALLOW"source = {spec = {cidrs = ["0.0.0.0/0"]}}destination = {spec = {cidrs = ["${mws_vpc_address.vm_primary_network_interface_address.status.ip_address}/32"]}}proto_ports = ["TCP:22"]active = true}Файл
main.tfс полным описанием конфигурации будет выглядеть так:Проверьте конфигурационный файл на наличие синтаксических ошибок:
bash terraform validateЕсли ошибок нет, вы получите следующее сообщение:
bash Success! The configuration is valid.Выполните команду:
bash terraform planTerraform проверит конфигурационные файлы, сопоставит описание желаемого состояния облачной инфраструктуры с фактическим и укажет, какие операции с ресурсами будут выполнены.
Примените конфигурацию:
bash terraform applyПодтвердите выполнение операций: введите слово
yesи нажмите Enter.Во время изменения ресурсов Terraform будет выводить краткие сообщения о выполняемых операциях. Проверить, что ресурсы изменены корректно, можно в веб-консоли.
5. Удалите ресурсы
Заголовок раздела «5. Удалите ресурсы»Ресурсы, созданные с помощью Terraform, тарифицируются. Удалите их, если вы больше не планируете их использовать:
Выполните команду:
bash terraform destroyПодтвердите удаление: введите слово
yesи нажмите Enter.