Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Сценарии использования
  • Веб-сервис
    • Все сценарии
    • Cтатический сайт в Object Storage
    • Cайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки через Yandex Load Balancer
    • Отказоустойчивый сайт с использованием DNS-балансировки
    • Сайт на базе Joomla с БД PostgreSQL
    • Сайт на WordPress
    • Сайт на WordPress с БД MySQL
    • Веб-сайт на базе 1С-Битрикс
  • Интернет-магазины
    • Все сценарии
    • Интернет-магазин на 1С-Битрикс
    • Интернет-магазин на Opencart
  • Архив данных
    • Все сценарии
    • Однонодовый файловый сервер
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование в Object Storage через Acronis
    • Резервное копирование в Object Storage через CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage через Bacula
    • Оцифровка архива в Yandex Vision
  • Тестовая среда
    • Все сценарии
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых виртуальных машинах
  • Управление инфраструктурой
    • Все сценарии
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Автоматизация сборки образов ВМ с помощью Jenkins
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Создание кластера Windows-серверов «1С:Предприятия» с базой данных MS SQL Server
    • Миграция в Yandex.Cloud с помощью Hystax Acura
    • Аварийное восстановление в Yandex.Cloud с помощью Hystax Acura
    • Настройка отказоустойчивой архитектуры в Yandex.Cloud
  • Windows в Yandex.Cloud
    • Все сценарии
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On
    • Развертывание группы доступности Always On с внутренним балансировщиком
  • Сетевая маршрутизация
    • Все сценарии
    • Маршрутизация с помощью NAT-инстанса
    • Создание VPN-туннеля
    • Установка виртуального роутера Cisco CSR1000v
    • Установка виртуального роутера Mikrotik CHR
    • Создание VPN-соединения с помощью OpenVPN
  • Визуализация и анализ данных
    • Все сценарии
    • Визуализация данных из CSV-файла
    • Визуализация данных из базы данных ClickHouse
    • Визуализация данных из Метрики
    • Визуализация данных из Metriсa Logs API
    • Публикация в DataLens Public диаграммы с картой на основе CSV-файла
    • Визуализация данных из AppMetrica
    • Визуализация геоданных из CSV-файла
  • Интернет вещей
    • Сценарии работы с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  1. Управление инфраструктурой
  2. Начало работы с Terraform

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

  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Установите Terraform
  • Создайте файл конфигурации Terraform
  • Настройте провайдер
  • Подготовьте план инфраструктуры
    • Создание пользователей
  • Создайте ресурсы
  • Удалите ресурсы

Terraform позволяет быстро создать облачную инфраструктуру в Yandex.Cloud. Состав инфраструктуры определяется с помощью конфигурационных файлов, в которых указываются требуемые облачные ресурсы и их параметры.

Конфигурации для Terraform записываются в файлы в формате .tf на языке HashiCorp Configuration Language (HCL).

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

  1. Установите Terraform
  2. Создайте файл конфигурации Terraform
  3. Настройте провайдер
  4. Подготовьте план инфраструктуры
  5. Создайте ресурсы
  6. Удалите ресурсы

Подготовьте облако к работе

Перед тем, как разворачивать инфраструктуру, нужно зарегистрироваться в Yandex.Cloud и создать платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex.Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

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

Подробнее об облаках и каталогах.

Необходимые платные ресурсы

В стоимость поддержки созданных с помощью Terraform ресурсов входят:

  • плата за постоянно запущенные виртуальные машины (см. тарифы Yandex Compute Cloud);
  • плата за использование динамических публичных IP-адресов (см. тарифы Yandex Virtual Private Cloud).

Установите Terraform

Windows/Linux
macOS

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

Используйте один из способов:

  • Для установки Terraform с помощью пакетного менеджера Homebrew выполните команду:

    $ brew install terraform
    
  • Для установки вручную скачайте дистрибутив Terraform и установите его по инструкции.

Создайте файл конфигурации Terraform

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

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

  1. В начале конфигурационного файла необходимо задать настройки провайдера.

    provider "yandex" {
      token     = "<OAuth>"
      cloud_id  = "<идентификатор облака>"
      folder_id = "<идентификатор каталога>"
      zone      = "ru-central1-a"
    }
    
    • provider — название провайдера.
    • token — OAuth-токен для доступа к Yandex.Cloud.
    • cloud_id — идентификатор облака, в котором Terraform создаст ресурсы.
    • folder_id — идентификатор каталога, в котором по умолчанию будут создаваться ресурсы.
    • zone — зона доступности, в которой по умолчанию будут создаваться все облачные ресурсы.
  2. Выполните команду terraform init в папке с конфигурационным файлом. Эта команда инициализирует провайдеров, указанных в конфигурационных файлах и позволяет работать с ресурсами и источниками данных провайдера.

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

С помощью Terraform в Yandex.Cloud можно создавать облачные ресурсы всех типов: виртуальные машины, диски, образы и т.д. Подробную информацию о ресурсах, создающихся с помощью Terraform, см. в документации провайдера.

Для создания ресурса необходимо указать набор обязательных и опциональных параметров, определяющих свойства ресурса. Такие описания ресурсов составляют план инфраструктуры.

По плану будут созданы две виртуальные машины: terraform1 и terraform2, а также облачная сеть network-1 с подсетью subnet-1.

Имена ресурсов должны соответствовать следующим требованиям:

  • Длина — от 3 до 63 символов.
  • Может содержать строчные буквы латинского алфавита, цифры и дефисы.
  • Первый символ — буква. Последний символ — не дефис.

У машин будут разные количества ядер и объемы памяти: 2 ядра и 2 Гб оперативной памяти у terraform1 и 4 ядра и 4 Гб оперативной памяти у terraform2. Машины автоматически получат публичные IP-адреса и приватные IP-адреса из диапазона 192.168.10.0/24 в подсети subnet-1, находящейся в зоне доступности ru-central1-a и принадлежащей облачной сети network-1. На виртуальных машинах будет установлена операционная система Ubuntu и размещена публичная часть ключа для доступа к машинам по SSH.

В конфигурации виртуальной машины вам потребуется указать идентификатор образа загрузочного диска. Список доступных публичных образов можно получить командой CLI yc compute image list --folder-id standard-images.

Для доступа к ВМ через SSH нужно сгенерировать пару SSH-ключей и передать публичную часть ключа на виртуальную машину в параметре ssh-keys блока metadata.

Конфигурации ресурсов задаются сразу после конфигурации провайдера:

provider "yandex" {
  token     = "OAuth_token"
  cloud_id  = "cloud-id"
  folder_id = "folder-id"
  zone      = "ru-central1-a"
}

resource "yandex_compute_instance" "vm-1" {
  name = "terraform1"

  resources {
    cores  = 2
    memory = 2
  }

  boot_disk {
    initialize_params {
      image_id = "fd87va5cc00gaq2f5qfb"
    }
  }

  network_interface {
    subnet_id = yandex_vpc_subnet.subnet-1.id
    nat       = true
  }

  metadata = {
    ssh-keys = "ubuntu:${file("~/.ssh/id_rsa.pub")}"
  }
}

resource "yandex_compute_instance" "vm-2" {
  name = "terraform2"

  resources {
    cores  = 4
    memory = 4
  }

  boot_disk {
    initialize_params {
      image_id = "fd87va5cc00gaq2f5qfb"
    }
  }

  network_interface {
    subnet_id = yandex_vpc_subnet.subnet-1.id
    nat       = true
  }

  metadata = {
    ssh-keys = "ubuntu:${file("~/.ssh/id_rsa.pub")}"
  }
}

resource "yandex_vpc_network" "network-1" {
  name = "network1"
}

resource "yandex_vpc_subnet" "subnet-1" {
  name           = "subnet1"
  zone           = "ru-central1-a"
  network_id     = yandex_vpc_network.network-1.id
  v4_cidr_blocks = ["192.168.10.0/24"]
}

output "internal_ip_address_vm_1" {
  value = yandex_compute_instance.vm-1.network_interface.0.ip_address
}

output "internal_ip_address_vm_2" {
  value = yandex_compute_instance.vm-2.network_interface.0.ip_address
}


output "external_ip_address_vm_1" {
  value = yandex_compute_instance.vm-1.network_interface.0.nat_ip_address
}

output "external_ip_address_vm_2" {
  value = yandex_compute_instance.vm-2.network_interface.0.nat_ip_address
}

Создание пользователей

Если вам нужно создать другого пользователя, в блок metadata вместо параметра ssh-keys можно передать пользовательские метаданные в параметре user-data. Для этого:

  1. Создайте текстовый файл с метаданными, например:

    #cloud-config
    users:
      - name: <имя пользователя>
        groups: sudo
        shell: /bin/bash
        sudo: ['ALL=(ALL) NOPASSWD:ALL']
        ssh-authorized-keys:
          - ssh-rsa AAAAB3Nza......OjbSMRX user@example.com
          - ssh-rsa AAAAB3Nza......Pu00jRN user@desktop
    
  2. Добавьте в конфигурацию параметр user-data, указав путь к файлу с метаданными:

      metadata = {
        user-data = "${file("<путь к файлу>/meta.txt")}"
      }
    

Подробнее о работе с метаданными читайте в разделе Метаданные виртуальной машины.

Создайте ресурсы

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

Внимание

Все созданные с помощью Terraform ресурсы тарифицируются, внимательно проверьте план.

Если в конфигурации нет ошибок, выполните команду terraform apply. Terraform запросит подтверждение создания ресурсов: введите в терминал слово yes и нажмите Enter. После этого в указанном каталоге будут созданы все требуемые ресурсы, а в терминале отобразятся IP-адреса виртуальных машин. Проверить появление ресурсов и их настройки можно в консоли управления.

Удалите ресурсы

Все созданные с помощью Terraform ресурсы можно удалить с помощью команды terraform destroy. После выполнения команды в терминале отобразится список ресурсов, которые будут удалены. Для подтверждения введите слово yes и нажмите Enter.

В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Установите Terraform
  • Создайте файл конфигурации Terraform
  • Настройте провайдер
  • Подготовьте план инфраструктуры
  • Создание пользователей
  • Создайте ресурсы
  • Удалите ресурсы
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»