Быстрый старт
Руководство для быстрого старта поможет вам начать работу с Terraform:
- Научиться удалять ресурсы.
1. Подготовьте окружение
Заголовок раздела «1. Подготовьте окружение»- Зарегистрируйтесь в MWS Cloud Platform.
- Убедитесь, что вы приглашены в организацию.
- Создайте новый проект или выберите существующий.
- Создайте сервисный аккаунт и назначьте ему роль
editorили выше на проект.
2. Получите аутентификационные данные
Заголовок раздела «2. Получите аутентификационные данные»- Создайте авторизованный ключ для сервисного аккаунта.
- Скачайте и сохраните файл с авторизованным ключом.
3. Настройте провайдер
Заголовок раздела «3. Настройте провайдер»Создайте файл
~/.terraformrc:- Linux, MacOS
- Windows
bash touch ~/.terraformrcДобавьте в файл
~/.terraformrcследующий блок:hcl provider_installation {network_mirror {url = "https://storage.mwsapis.ru/mws-terraform/",include = ["registry.terraform.io/mws-cloud/*"]}direct {exclude = ["registry.terraform.io/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, с двумя ядрами vCPU, 4ГБ RAM, диском размером в 10 ГБ и ОС Ubuntu 22.04. Она получит внутренний IP-адрес из подсетиmysubnet; - правило файрвола c именем
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}}}}]}]}}Создайте правило файрвола, которое разрешит доступ к созданной ВМ по 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с полным описанием конфигурации будет выглядеть так:
5. Удалите ресурсы
Заголовок раздела «5. Удалите ресурсы»Ресурсы, созданные с помощью Terraform, могут тарифицироваться. Не забудьте удалить ресурсы, если вы создали их в тестовых целях, и они вам больше не нужны.
Чтобы удалить ресурсы:
Выполните команду:
bash terraform destroyПодтвердите удаление: введите слово
yesи нажмите Enter.