Далее идет описание как поднимать VM из руководства про использование Terraform в Yandex Cloud.
Создаваемые здесь VM - они не про наш database-speed-test, а просто из руководства.
Развитие этой темы у нас пока на паузе.
Откройте PowerShell, переключитесь в каталог ./terraform
https://yandex.cloud/ru/docs/cli/quickstart
Нам нужно чтоб в каком-то из доступных вам облаков был каталог database-speed-test,
и чтобы на вашем компьютере был профиль yc тоже с названием database-speed-test,
настроенный для работы с этим облаком и с этим каталогом.
Поэтому, во время работы yc init выберите [2] Create a new profile,
введите имя нового профиля database-speed-test.
Потом, выберите [3] Create a new folder,
введите имя нового каталога database-speed-test.
yc iam service-account create --name terraformЗапустите следующий скрипт:
./env-long.ps1В результате будет создан другой скрипт ./terraform/env.private.ps1, устанавливающий следующие переменные окружения:
YC_CLOUD_IDYC_FOLDER_IDYC_SA_TERRAFORM_ID
Данный созданный скрипт будет автоматически выполнен, упомянутые переменные окружения будут автоматически проставлены в текущий сеанс PowerShell.
Также будет сформирован IAM токен для работы от имени созданного нами ранее сервисного аккаунта terraform.
Этот IAM токен будет проставлен в переменную окружения YC_TOKEN.
Срок действия этого токена YC_TOKEN периодически истекает,
и его приходится обновлять
скриптом ./terraform/env-fast.ps1.
Также ./terraform/env-fast.ps1 нужно выполнять перед работой с terraform в новом сеансе PowerShell, где еще не проставлены все нужные переменные окружения.
yc resource-manager folder add-access-binding $Env:YC_FOLDER_ID --role editor --subject "serviceAccount:$Env:YC_SA_TERRAFORM"
yc resource-manager folder add-access-binding $Env:YC_FOLDER_ID --role compute.osLogin --subject "serviceAccount:$Env:YC_SA_TERRAFORM"https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli
mv $env:APPDATA/terraform.rc $env:APPDATA/terraform.rc.oldnotepad $env:APPDATA/terraform.rcНажимаем кнопку, что нужно создать новый файл.
Сохраняем новый файл terraform.rc со следующим содержимым:
provider_installation {
network_mirror {
url = "https://terraform-mirror.yandexcloud.net/"
include = ["registry.terraform.io/*/*"]
}
direct {
exclude = ["registry.terraform.io/*/*"]
}
}terraform initУдалите файл ./terraform/.terraform.lock.hcl.
Сгенерируйте lock файл снова, следующей командой:
terraform providers lock -net-mirror=https://terraform-mirror.yandexcloud.net -platform=windows_amd64 -platform=linux_amd64 -platform=darwin_arm64 yandex-cloud/yandexssh-keygen -t ed25519
Будут сформированы вот такая пара ключей:
Эти ключи проигнорированы в gitignore.
У нас используется вот такой образ
ID : fd80von1v2g6rjn7oofk
NAME : ubuntu-2404-lts-oslogin-v20251117
FAMILY : ubuntu-2404-lts-oslogin
PRODUCT IDS : f2evival4mdpe3hpjhme
Но, можно использовать и другие образы.
Получите список всех доступных образов.
yc compute image list --folder-id standard-imagesПри необходимости, отфильтруйте этот список каким-то похожим образом:
yc compute image list --folder-id standard-images | Select-String -Pattern " ubuntu-2404-lts-oslogin-v202511"Выберите образ, скопируйте его ID и используйте его в ./terraform/main.tf
terraform planterraform applyssh -i id_ed25519 myuser@<публичный IP>terraform destroy