Пример создания ресурса

Пример создания ресурса

Пример создания виртуального сервера:

  1. ### TERRAFORM AREA
    terraform {
      required_providers {
        prodata = {
          source  = "prodata-cloud/prodata"
          version = "~> 0.11.0"
        }
      }
    }

    ### PROVIDERS

    provider "prodata" {
      api_base_url   = "https://my.pro-data.tech/"
      region         = "UZ5"
      project_tag    = "example-123"
      api_key_id     = "" # better go with export PRODATA_API_KEY_ID="your-api-key-id"
      api_secret_key = "" # better go with export PRODATA_API_SECRET_KEY="your-api-secret-key"
    }

    ### NETWORKING

    # Create network
    resource "prodata_local_network" "frontend_network" {
      name    = "my-frontend-subnet"
      cidr    = "10.10.1.0/24"
      gateway = "10.10.1.254"
    }

    # Create public ip 
    resource "prodata_public_ip" "frontend_public_ip" {
      name = "frontend-public-ip"
    }

    ### STORAGE

    # Create standalone volume
    resource "prodata_volume" "frontend_volume" {
      name = "frontend-volume"
      type = "SSD"
      size = 100
    }

    ### COMPUTE

    # Generate random password
    resource "random_password" "frontend_password" {
      length  = 10
      special = true
    }

    # Generate SSH key
    resource "tls_private_key" "frontend_ssh_key" {
      algorithm = "ED25519"
    }

    # Use data to get image id 
    data "prodata_image" "debian" {
      slug = "debian-11"
    }

    # Create VM with password authentication
    resource "prodata_vm" "frontend_1" {
      name             = "frontend-vm-1"
      image_id         = data.prodata_image.debian.id
      cpu_cores        = 2
      ram              = 4
      disk_size        = 50
      disk_type        = "SSD"
      local_network_id = prodata_local_network.frontend_network.id
      password         = random_password.frontend_password.result
    }

    # Create VM with password SSH key authentication
    resource "prodata_vm" "frontend_2" {
      name             = "frontend-vm-2"
      image_id         = data.prodata_image.debian.id
      cpu_cores        = 2
      ram              = 4
      disk_size        = 50
      disk_type        = "SSD"
      local_network_id = prodata_local_network.frontend_network.id
      ssh_public_key   = tls_private_key.frontend_ssh_key.public_key_pem
    }

    ### ATTACHMENTS

    # Attach public ip to VM
    resource "prodata_public_ip_attachment" "example" {
      public_ip_id = prodata_public_ip.frontend_public_ip.id
      vm_id        = prodata_vm.frontend_1.id
    }

    # Attach standalone volume to VM
    resource "prodata_volume_attachment" "example" {
      vm_id     = prodata_vm.frontend_1.id
      volume_id = prodata_volume.frontend_volume.id
    }

После выполнения terraform apply сервер будет создан в соответствии с описанной конфигурацией.
    • Related Articles

    • Что поддерживается сейчас (MVP)

      ? Управление виртуальными серве Доступен ресурс для создания и управления виртуальными машинами: создание VM из шаблонов или ISO настройка CPU, RAM и параметров сервера базовые операции жизненного цикла ? Управление сетевыми ресурсами Добавлена ...
    • Как начать работу

      1. Установите Terraform CLI с официального сайта HashiCorp. 2. Создайте конфигурационный файл с описанием провайдера. 3. Получите ключи доступа в панели управления в разделе «Ключи доступа» (см. раздел базы знаний «Управление ключами доступа»). 4. ...
    • Terraform и Infrastructure as Code в Pro-Data Cloud

      Terraform — это инструмент инфраструктуры как кода (IaC), который позволяет описывать и управлять облачными ресурсами в виде конфигурационных файлов. Используя Terraform, вы можете создавать, изменять и удалять ресурсы Pro-Data Cloud автоматически, ...
    • Модель доступа при работе через Terraform

      Вся работа в с API платформы (в том числе через Terraform) происходит в контексте выбранного проекта. Фактический уровень доступа ключа к ресурсам и проектам определяется ролью владельца ключа в этом проекте. Это означает, что даже если ключ создан с ...