---
title: 'Создать выделенный сервер готовой конфигурации через Terraform'
sidebar_label: 'Создать выделенный сервер готовой конфигурации'
description: 'Как создать выделенный сервер готовой конфигурации'
sidebar_position: 1
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import CreateResourcesAlert from '@site/terraform/_partials/common/create-resources-alert.mdx'
import ConfigureSelectelProviders from '@site/terraform/_partials/common/configure-selectel-providers.mdx'

# Создать выделенный сервер готовой конфигурации через Terraform

<CreateResourcesAlert />

Чтобы назначить на сервер публичный выделенный IP-адрес, используйте инструкцию [Создать выделенный сервер готовой конфигурации с публичным выделенным IP-адресом](/terraform/examples/dedicated/create-prebuilt-dedicated-servers-with-public-subnet/).

<br />

1. Опционально: [настройте провайдера](#configure-provider).
2. [Получите ID готовой конфигурации](#get-id-prebuilt-server-configuration).
3. [Получите ID локации](#get-location-id).
4. [Получите образ ОС](#get-image).
5. [Создайте выделенный сервер](#create-dedicated-server).

## Конфигурационные файлы \{#config}

<details>
  <summary>Пример файла для настройки провайдеров</summary>

  ```hcl
  terraform {
    required_providers {
      selectel  = {
        source  = "selectel/selectel"
        version = "~> 7.1.0"
      }
    }
  }

  provider "selectel" {
    domain_name = "123456"
    username    = "user"
    password    = "password"
    auth_region = "ru-1"
    auth_url    = "https://cloud.api.selcloud.ru/identity/v3/"
  }
  ```
</details>

<details>
  <summary>Пример файла для создания выделенного сервера готовой конфигурации</summary>

  ```hcl
  data "selectel_dedicated_configuration_v1" "server_config" {
    project_id         = selectel_vpc_project_v2.project_1.id
    deep_filter        = <<EOT
      {
        "name": "CL25-SSD"
      }
    EOT
  }

  data "selectel_dedicated_location_v1" "server_location" {
    project_id         = selectel_vpc_project_v2.project_1.id
    filter {
      name             = "SPB-2"
    }
  }

  data "selectel_dedicated_os_v1" "server_os" {
    project_id         = selectel_vpc_project_v2.project_1.id
    filter {
      name             = "Ubuntu"
      version_value    = "2404" 
      configuration_id = data.selectel_dedicated_configuration_v1.server_config.configurations[0].id
      location_id      = data.selectel_dedicated_location_v1.server_location.locations[0].id    
    }
  }

  resource "selectel_dedicated_server_v1" "server_1" {
    project_id         = selectel_vpc_project_v2.project_1.id
    configuration_id   = data.selectel_dedicated_configuration_v1.server_config.configurations[0].id
    location_id        = data.selectel_dedicated_location_v1.server_location.locations[0].id
    os_id              = data.selectel_dedicated_os_v1.server_os.os[0].id
    price_plan_name    = "1 day"
  }
  ```
</details>

## 1. Опционально: настроить провайдера \{#configure-provider}

<ConfigureSelectelProviders />

## 2. Получить ID готовой конфигурации \{#get-id-prebuilt-server-configuration}

```hcl
data "selectel_dedicated_configuration_v1" "server_config" {
  project_id  = selectel_vpc_project_v2.project_1.id
  deep_filter = <<EOT
    {
       "name": "EL50-SSD"
    }
  EOT
}
```

Здесь `deep_filter` — фильтр списка готовых конфигураций:

* `name` — название готовой конфигурации, например `EL50-SSD`.
  Можно посмотреть в панели управления: в верхнем меню нажмите **Продукты** и выберите **Выделенные серверы**.
  Если в проекте есть созданные серверы, в разделе **Серверы** нажмите **Заказать сервер**.
  Если в проекте нет серверов, страница заказа откроется автоматически.

Посмотрите подробное описание источника данных [selectel\_dedicated\_configuration\_v1](/terraform/selectel-provider-reference/data-sources/dedicated_configuration_v1/).

Посмотрите подробное описание ресурса [selectel\_vpc\_project\_v2](/terraform/selectel-provider-reference/resources/vpc_project_v2/).

## 3. Получить ID локации \{#get-location-id}

```hcl
data "selectel_dedicated_location_v1" "server_location" {
  project_id = selectel_vpc_project_v2.project_1.id
  filter {
    name     = "SPB-2"
  }
}
```

Здесь `filter` — фильтр списка локаций:

* `name` — [пул](/infrastructure/locations/#pool), в котором будет создан выделенный сервер, например `SPB-2`.
  Список доступных пулов можно посмотреть в инструкции [Доступность продуктов в локациях](/infrastructure/product-availability-by-location/).

Посмотрите подробное описание источника данных [selectel\_dedicated\_location\_v1](/terraform/selectel-provider-reference/data-sources/dedicated_location_v1/).

## 4. Получить образ ОС \{#get-image}

```hcl
data "selectel_dedicated_os_v1" "server_os" {
  project_id         = selectel_vpc_project_v2.project_1.id
  filter {
    name             = "Ubuntu"
    version_value    = "2404"
    configuration_id = data.selectel_dedicated_configuration_v1.server_config.configurations[0].id
    location_id      = data.selectel_dedicated_location_v1.server_location.locations[0].id
  }
}
```

Здесь `filter` — фильтр списка ОС:

* `name` — имя семейства ОС, например `Ubuntu`.
  Вы можете создать сервер без ОС, для этого укажите `noos` и не указывайте версию.
  Список доступных ОС можно посмотреть в инструкции [Образы ОС для установки](/dedicated/manage/os-images/);

* `version_value` — версия образа.
  Посмотреть версию образа ОС можно с помощью API метода [List OS configurations](https://docs.selectel.ru/api/dedicated/#tag/Boot-Manager/operation/get_os_template_list_new_view).

Посмотрите подробное описание источника данных [selectel\_dedicated\_os\_v1](/terraform/selectel-provider-reference/data-sources/dedicated_os_v1/).

## 5. Создать выделенный сервер \{#create-dedicated-server}

```hcl
resource "selectel_dedicated_server_v1" "server_1" {
  project_id       = selectel_vpc_project_v2.project_1.id
  configuration_id = data.selectel_dedicated_configuration_v1.server_config.configurations[0].id
  location_id      = data.selectel_dedicated_location_v1.server_location.locations[0].id
  os_id            = data.selectel_dedicated_os_v1.server_os.os[0].id
  price_plan_name  = "1 day"
}
```

Здесь `price_plan_name` — тарифный план, например `1 day`.
Посмотреть названия тарифных планов можно с помощью API метода [Price Plans](/api/dedicated/#tag/Price-Plans), подробнее о тарифных планах в инструкции [Модель оплаты и цены выделенного сервера](/dedicated/about/payment/#billing-options).
Доступные значения:

* `1 day`;
* `1 month`;
* `3 months`;
* `6 months`;
* `12 months`;
* `12 months • monthly payment`.

Посмотрите подробное описание ресурса [selectel\_dedicated\_server\_v1](/terraform/selectel-provider-reference/resources/dedicated_server_v1/).
