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

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'

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

<CreateResourcesAlert />

<br />

1. Опционально: [настройте провайдера](#configure-provider).
2. [Подключите дополнительные публичные IP-адреса](#add-additional-ips).
3. [Получите ID готовой конфигурации](#get-id-prebuilt-server-configuration).
4. [Получите ID локации](#get-location-id).
5. [Получите образ ОС](#get-image).
6. [Выберите публичную подсеть](#select-public-subnet).
7. [Создайте выделенный сервер](#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    
      }
  }

  data "selectel_dedicated_public_subnet_v1" "public_subnets" {
      project_id         = selectel_vpc_project_v2.project_1.id
      filter {
          location_id    = data.selectel_dedicated_location_v1.server_location.locations[0].id
          subnet         = "203.0.113.0/28"
          ip             = "203.0.113.12"
      }
  }

  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
      public_subnet_id   = data.selectel_dedicated_public_subnet_v1.public_subnets.subnets[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. Подключить дополнительные публичные IP-адреса \{#add-additional-ips}

Используйте инструкцию [Подключить дополнительные публичные IP-адреса](/dedicated/networks/public-networks-and-subnets/#add-additional-ips).

## 3. Получить 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.project\_1](/terraform/selectel-provider-reference/resources/vpc_project_v2).

## 4. Получить 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/).

## 5. Получить образ ОС \{#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/).

## 6. Выбрать публичную подсеть \{#select-public-subnet}

```hcl
data "selectel_dedicated_public_subnet_v1" "public_subnets" {
  project_id    = selectel_vpc_project_v2.project_1.id
  filter {
    location_id = data.selectel_dedicated_location_v1.server_location.locations[0].id
    subnet      = "203.0.113.0/28"
    ip          = "203.0.113.12"
  }
}
```

Здесь:

* `location_id` — ID локации выделенной публичной подсети.
  Локация публичной подсети должна совпадать с локацией для создания сервера;
* `subnet` — (Optional) адрес выделенной публичной подсети, которую вы [заказали на этапе 2](#add-additional-ips).
  Если не указать адрес публичной подсети, будет выбрана любая доступная публичная подсеть для локации.
  Можно посмотреть в [панели управления](https://my.selectel.ru/servers/network/subnets): в верхнем меню нажмите **Продукты** → **Выделенные серверы** → **Сеть** → вкладка **Публичные подсети**;
* `ip` — (Optional) свободный IP-адрес из выделенной публичной подсети которую вы [заказали на этапе 2](#add-additional-ips).
  Если не указать IP-адрес, будет выбран любой свободный IP-адрес из публичной подсети.

## 7. Создать выделенный сервер \{#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
  public_subnet_id = data.selectel_dedicated_public_subnet_v1.public_subnets.subnets[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/).

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