Купить Корзина
  • Облако и IT-инфраструктура
  • Домены и сайты
  • Вход
Получить консультацию

Ответим на вопросы, расскажем о конфигурациях, поможем с переносом, подберем оборудование, подготовим коммерческое предложение

Нажимая кнопку «Отправить» я даю согласие на обработку персональных данных и подтверждаю, что ознакомился с Политикой конфиденциальности

Персональный менеджер ответит на ваши вопросы и проведет через все этапы заключения договора: — подберет оборудование — сформирует коммерческое предложение — поможет с миграцией сервера к нам

Нажимая кнопку «Отправить» я даю согласие на обработку персональных данных и подтверждаю, что ознакомился с Политикой конфиденциальности

Или просто оставьте номер телефона, и мы перезвоним вам

  • Телефон в Москве

    +7 495 580-11-11
  • Бесплатный звонок по России

    8 800 555-34-78
  • Или обратитесь в наши офисы

    Региональные номера
    1. Документация
    2. Рег.облако
    3. Инструменты
    4. Terraform
    5. Работа с Terraform
    6. Начало работы с Terraform

    Начало работы с Terraform

    Terraform позволяет управлять облачной инфраструктурой Рег.облака как кодом. Вместо того чтобы работать с ресурсами через панель управления, вы описываете желаемую инфраструктуру в конфигурационных файлах. Эти файлы используют HCL (HashiCorp Configuration Language) — простой язык, который по структуре похож на JSON или YAML. Terraform анализирует файлы и выполняет нужные действия (создает, обновляет или удаляет ресурсы), чтобы привести инфраструктуру к тому виду, который вы описали.

    Terraform делает инфраструктуру прозрачной, повторяемой и контролируемой. Конфигурации можно хранить в репозитории, версионировать и использовать повторно, например, для развертывания одинаковой инфраструктуры в различных средах. Кроме того, вы всегда точно сможете узнать, что и где развернуто. Terraform работает по одному и тому же принципу на разных платформах, но у каждого облака есть свой провайдер. Описания ресурсов у разных провайдеров могут отличаться, но подходы и инструменты будут одинаковыми независимо от того, на какой платформе строите решения. Это снижает риск ошибок, ускоряет развертывание и делает инфраструктуру предсказуемой.

    Какими ресурсами можно управлять с помощью Terraform в Рег.облаке

    На данный момент в Рег.облаке с помощью Terraform можно управлять:

    • облачными серверами,
    • облачными серверами с GPU,
    • снэпшотами,
    • SSH-ключами.

    Подготовка к работе с Terraform

    • 1
      Если у вас еще нет аккаунта в Рег.облаке, зарегистрируйтесь. Если у вас есть аккаунт, войдите в панель управления.
    • 2
      Убедитесь, что на балансе облачного счета достаточно средств для создания инфраструктуры. Если средств недостаточно, пополните баланс: Как пополнить баланс облачных серверов.

    Установка Terraform

    Из бинарного файла

    Обратите внимание

    Официальный сайт Terraform может быть недоступен на территории РФ.

    Скачайте дистрибутив Terraform и установите его по инструкции.

    Через менеджер пакетов

    • 1
      Установка будет производиться через менеджер пакетов snap. Если у вас нет snap, установите его.
    • 2
      Введите команду:
    sudo snap install terraform --classic
    • 1
      Установка будет производиться через менеджер пакетов Homebrew. Если у вас нет Homebrew, установите его.
    • 2
      Введите команду:
    brew install terraform
    • 1
      Установка будет производиться через менеджер пакетов chocolatey. Если у вас нет chocolatey, установите его.
    • 2
      Введите команду:
    choco install terraform

    Аутентификация в Terraform

    В Terraform все операции выполняются от имени вашего аккаунта. Для аутентификации в Terraform используется токен для API. Получить или изменить токен вы можете в панели управления в разделе Настройки.

    Чтобы настроить аутентификацию:

    • 1
      Создайте директорию, в которой будут храниться конфигурационные файлы Terraform. Имя директории может быть любым, например, cloud-terraform.
    • 2
      Создайте файл с описанием переменных, например, variables.tf.
    • 3

      Добавьте в файл следующие блоки:

      variable "token" {
        type        = string
        description = "API token"
        sensitive = true
      }
      
      variable "api_url" {
        type        = string
        description = "API URL"
      }
    • 4
      Создайте файл со значениями переменных, например terraform.tfvars.
    • 5

      Добавьте в файл следующие значения:

      token   = “your-token”

      Где your-token — ваш токен для API, который находится в панели управления в разделе Настройки.

    Вместо того чтобы создавать файл с переменными, вы можете задать токен через переменную окружения TF_VAR_token:

    Linux/MacOS

    export TF_VAR_token=“your-token”

    Windows

    $env:TF_VAR_token=“your-token”

    Настройка провайдера

    В Terraform провайдер — это плагин, который обеспечивает взаимодействие Terraform с внешними сервисами через их API. Он отвечает за создание, изменение и удаление ресурсов конкретного сервиса. Без провайдера Terraform не сможет управлять инфраструктурой.

    Чтобы настроить провайдера:

    • 1
      Перейдите в директорию с конфигурационными файлами (cloud-terraform).
    • 2

      Создайте файл с расширением .tf, например main.tf.

      Файлы *.tf — это текстовые файлы с описанием инфраструктуры и конфигурации Terraform. В проекте может быть несколько таких файлов. При запуске plan или apply Terraform автоматически объединяет их в единую конфигурацию, как если бы они были одним большим файлом.

    • 3

      В файл main.tf добавьте блоки с указанием ссылки на провайдер Рег.облака:

      terraform {
         required_providers {
           regcloud = {
             source = "tf.reg.cloud/regru/regcloud"
           }
         }
       }
      
      provider "regcloud" {
        token   = var.token
        api_url = var.api_url
      }
    • 4

      Выполните команду в текущей директории с вашими .tf-файлами, чтобы инициализировать Terraform:

      terraform init

      Если вы хотите обновить провайдер до последней версии, в текущей директории с вашими .tf-файлами выполните:

      terraform init -upgrade

    Подготовка плана инфраструктуры

    В примере ниже мы добавим в файл main.tf конфигурацию, с помощью которой будут созданы следующие ресурсы:

    • SSH-ключ;
    • облачный сервер с 1 ядром vCPU, 1 ГБ RAM, 10 ГБ диска, тарифом «Производительный», ОС Ubuntu 24.04 LTS и образом Docker в регионе Mосква-1;
    • снэпшот облачного сервера.
    • 1

      Для загрузки SSH-ключа добавьте в main.tf следующий код:

      resource "regcloud_ssh_key" "test" {
        name       = "example_key"
        public_key = file("./assets/id_rsa_example.pub")
      }
      
      output "ssh_key_fingerprint" {
        value = regcloud_ssh_key.test.fingerprint
      }
      
      output "ssh_key_name" {
        value = regcloud_ssh_key.test.name
      }

      В Terraform resource — это описание любого создаваемого или управляемого объекта инфраструктуры (например, сервера, SSH-ключа или снэпшота). output используется для вывода нужных данных после создания ресурсов.

      Terraform загрузит публичный ключ из файла ./assets/id_rsa_example.pub и добавит его в облако как новый SSH-ключ с именем example_key.

      Если вы еще не создавали SSH-ключ на своем компьютере, сгенерируйте его по инструкции: Как создать SSH-ключ. Затем вместо ./assets/id_rsa_example.pub укажите ваш файл с публичным ключом.

    • 2

      Для создания облачного сервера с загруженным выше ключом добавьте в main.tf код:

      resource "regcloud_server" "example_server" {
        name        = "example_server_001"
        size        = "c1-m1-d10-hp"
        image       = "ubuntu-24-04-amd64-docker"
        region_slug = "openstack-msk1"
        ssh_keys    = [regcloud_ssh_key.test.fingerprint]
        isp_license_size = null # значение указывается только для образов с ispmanager, в этом случае null
        backups     = false
      }
      
      output "server_id" {
        value = regcloud_server.example_server.server_id
      }
      
      output "created_at" {
        value = regcloud_server.example_server.created_at
      }
      
      output "size" {
        value = regcloud_server.example_server.size
      }

      Где:

      • name — имя сервера,
      • size — выбранный тариф (количество CPU, RAM, диска, линейка тарифов),
      • image — образ операционной системы (Ubuntu 24.04 LTS с Docker),
      • region_slug — регион размещения (Москва-1),
      • ssh_keys — SSH-ключ, привязанный для доступа к серверу,
      • isp_license_size — тарифный план лицензии ispmanager,
      • backups — отключение автоматических бэкапов.

      Посмотреть доступные значения параметров size, image и region_slug можно в панели управления.

      Обратите внимание

      Не все образы и тарифы доступны в каждом регионе. Кроме того, некоторые тарифы могут быть несовместимы с определенными образами. Точнее узнать о доступности можно на странице заказа сервера.

    • 3

      Для создания снэпшота облачного сервера добавьте в main.tf код:

      resource "regcloud_server_snapshot" "example" {
        reglet_id       = regcloud_server.example_server.server_id
        name            = "tf_snap"
        offline         = 1
      }
      
      output "id" {
        value = regcloud_server_snapshot.example.id
      }
      
      output "name" {
        value = regcloud_server_snapshot.example.name
      }
      
      output "snapshot_created_at" {
        value = regcloud_server_snapshot.example.created_at
      }

      Где:

      • reglet_id — ID сервера, с которого делается снимок,
      • name — имя снимка,
      • offline = 1 — сделать снимок с остановкой сервера.

      В итоге файл main.tf должен выглядеть следующим образом:

    main.tf
    terraform {
       required_providers {
         regcloud = {
           source = "tf.reg.cloud/regru/regcloud"
         }
       }
     }
    
    
    provider "regcloud" {
      token   = var.token
      api_url = var.api_url
    }
    
    resource "regcloud_ssh_key" "test" {
      name       = "example_key"
      public_key = file("./assets/id_rsa_example.pub")
    }
    
    output "ssh_key_fingerprint" {
      value = regcloud_ssh_key.test.fingerprint
    }
    
    output "ssh_key_name" {
      value = regcloud_ssh_key.test.name
    }
    
    resource "regcloud_server" "example_server" {
      name        = "example_server_001"
      size        = "c1-m1-d10-hp"
      image       = "ubuntu-24-04-amd64-docker"
      region_slug = "openstack-msk1"
      ssh_keys    = [regcloud_ssh_key.test.fingerprint]
      isp_license_size = null
      backups     = false
    }
    
    output "server_id" {
      value = regcloud_server.example_server.server_id
    }
    
    output "created_at" {
      value = regcloud_server.example_server.created_at
    }
    
    output "size" {
      value = regcloud_server.example_server.size
    }
    
    output "snapshot_created_at" {
      value = regcloud_server_snapshot.example.created_at
    }
    
    output "distribution" {
      value = regcloud_server_snapshot.example.distribution
    }
    
    output "min_disk_size" {
      value = regcloud_server_snapshot.example.min_disk_size
    }
    
    output "size_gigabytes" {
      value = regcloud_server_snapshot.example.size_gigabytes
    }

    Проверка конфигурации

    Для проверки файла main.tf на наличие синтаксических ошибок введите команду:

    terraform validate

    Если ошибок нет, вы увидите следующее сообщение:

    Success! The configuration is valid.

    Создание ресурсов

    • 1

      Введите команду:

      terraform plan

      Terraform сопоставит текущую инфраструктуру с желаемой и выведет список изменений, которые будут внесены. Если указанный в выводе результат вас устраивает, перейдите к следующему шагу.

    • 2

      Чтобы применить конфигурацию и создать ресурсы, введите команду:

      terraform apply

      Для подтверждения операции введите yes и нажмите Enter.

      При создании ресурсов в терминале будут появляться сообщения о ходе выполнения операций. Terraform выполняет операции синхронно, поэтому создание ресурсов занимает некоторое время. Убедиться, что ресурсы созданы и настроены корректно, можно в панели управления.

    Удаление ресурсов

    Для удаления всех ресурсов введите команду:

    terraform destroy

    Чтобы подтвердить операцию, введите yes и нажмите Enter.

    Специальные предложения
    • Гранты для бизнеса до 500к
    • Скидки на cloud GPU до 50%
    • Скидки на bare-metal с А4000 и А5000
    • Кешбэк 100% на kubernetes
    Рассылка Рег.облака

    Лайфхаки, скидки и новости об IT

    Даю согласие на получение рекламных и информационных материалов

    Продукты и сервисы
    • Облачные серверы
    • Выделенные серверы
    • Базы данных
    • S3 хранилище
    • Кластеры Kubernetes
    • Cloud GPU
    • VPS
    Решения
    • Интернет-магазин в облаке
    • Разработка и тестирование в облаке
    • Удаленный рабочий стол
    • Работа с 1С
    • Корпоративное хранение данных
    • Искусственный интеллект и машинное обучение в облаке
    • Конфигуратор сервера
    • Администрирование серверов
    Техподдержка
    • Создать тикет
    • Документация
    Прочее
    • О компании
    • Партнерская программа
    • Гранты
    • Блог
    • Контакты
    • Отзывы клиентов
    • © ООО «РЕГ.РУ» Нашли опечатку?
      Выделите и нажмите Ctrl+Enter
    • Облачная платформа Рег.ру включена в реестр российского ПО Запись №23682 от 29.08.2024
      • Политика конфиденциальности
      • Политика обработки персональных данных
      • Правила применения рекомендательных технологий
    • 8 800 333-92-23

      Бесплатный звонок по России

      +7 (495) 009‑92‑22

      Телефон в Москве

      • vk
      • telegram
      • moikrug
    • Мы используем cookie и рекомендательные технологии для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера