Терминирование TLS-соединений
- Подготовьте облако к работе
- Создайте облачную сеть
- Зарезервируйте статический публичный IP-адрес
- Создайте группы безопасности
- Импортируйте TLS-сертификат сайта в Certificate Manager
- Создайте группу ВМ для сайта
- Загрузите файлы сайта на ВМ
- Создайте группу бэкендов
- Создайте и настройте HTTP-роутер
- Создайте L7-балансировщик
- Настройте DNS для сайта
- Проверьте работу хостинга
- Удалите созданные ресурсы
- Как создать инфраструктуру с помощью Terraform
L7-балансировщики Yandex Application Load Balancer могут терминировать TLS-соединения: отправлять клиентам сертификаты, дешифровать входящий трафик для отправки бэкендам и шифровать ответы бэкендов для отправки клиентам. Сценарий рассказывает, как настроить балансировщик, чтобы он терминировал TLS-соединения с помощью сертификата из Yandex Certificate Manager и перенаправлял HTTP-запросы на HTTPS.
В качестве примера в сценарии используется доменное имя my-site.com
.
Чтобы создать виртуальный хостинг:
- Подготовьте облако к работе.
- Создайте облачную сеть.
- Зарезервируйте статический публичный IP-адрес.
- Создайте группы безопасности.
- Импортируйте TLS-сертификат сайта в Certificate Manager.
- Создайте группу виртуальных машин для сайта.
- Загрузите файлы сайта на ВМ.
- Создайте группу бэкендов.
- Создайте и настройте HTTP-роутер.
- Создайте L7-балансировщик.
- Настройте DNS для сайта.
- Проверьте работу хостинга.
Если созданные ресурсы вам больше не нужны, удалите их.
Также инфраструктуру для виртуального хостинга можно развернуть через Terraform с помощью готового файла конфигурации.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки виртуального хостинга входят:
- Плата за постоянно запущенные ВМ (см. тарифы Yandex Compute Cloud).
- Плата за использование публичного статического IP-адреса (см. тарифы Yandex Virtual Private Cloud).
Создайте облачную сеть
Все ресурсы, созданные в сценарии, будут относиться к одной облачной сети.
Чтобы создать сеть:
- В консоли управления
выберите сервис Virtual Private Cloud. - Нажмите кнопку Создать сеть.
- Укажите Имя сети:
mysite-network
. - В поле Дополнительно выберите опцию Создать подсети.
- Нажмите кнопку Создать сеть.
См. раздел Как создать инфраструктуру с помощью Terraform.
Зарезервируйте статический публичный IP-адрес
Для работы виртуального хостинга потребуется статический публичный IP-адрес, который будет назначен L7-балансировщику.
Чтобы зарезервировать IP-адрес:
- В консоли управления
выберите сервис Virtual Private Cloud. - Откройте вкладку IP-адреса. Нажмите кнопку Зарезервировать адрес.
- В открывшемся окне выберите зону доступности
ru-central1-a
. Нажмите кнопку Зарезервировать.
См. раздел Как создать инфраструктуру с помощью Terraform.
Создайте группы безопасности
Группы безопасности содержат правила, которые разрешают балансировщику получать входящий трафик и отправлять его на ВМ, а ВМ — получать этот трафик. В сценарии будут созданы две группы безопасности: для балансировщика и для всех ВМ.
Чтобы создать группы безопасности:
-
В консоли управления
выберите сервис Virtual Private Cloud. -
Откройте вкладку Группы безопасности.
-
Создайте группу безопасности для балансировщика:
-
Нажмите кнопку Создать группу.
-
Укажите Имя группы безопасности:
mysite-sg-balancer
. -
Выберите Сеть
mysite-network
. -
В блоке Правила создайте следующие правила по инструкции под таблицей:
Направление
трафикаОписание Диапазон портов Протокол Источник /
назначениеCIDR блоки Исходящий
any
Весь
Любой
CIDR
0.0.0.0/0
Входящий
ext-http
80
TCP
CIDR
0.0.0.0/0
Входящий
ext-https
443
TCP
CIDR
0.0.0.0/0
Входящий
healthchecks
30080
TCP
Проверки состояния балансировщика
— - Выберите вкладку Исходящий трафик или Входящий трафик.
- Нажмите кнопку Добавить правило.
- В открывшемся окне в поле Диапазон портов укажите один порт или диапазон портов, куда или откуда будет поступать трафик.
- В поле Протокол укажите нужный протокол или оставьте
Любой
, чтобы разрешить передачу трафика по всем протоколам. - В поле Назначение или Источник выберите назначение правила:
CIDR
— правило будет применено к диапазону IP-адресов. В поле CIDR блоки укажите CIDR и маски подсетей, в которые или из которых будет поступать трафик. Чтобы добавить несколько CIDR, нажимайте кнопку Добавить CIDR.Группа безопасности
— правило будет применено к ВМ из текущей группы или из выбранной группы безопасности.Проверки состояния балансировщика
— правило, которое позволяет балансировщику проверять состояние ВМ.
- Нажмите кнопку Сохранить. Таким образом создайте все правила из таблицы.
-
Нажмите кнопку Сохранить.
-
-
Аналогично для ВМ создайте группу безопасности
mysite-sg-vms
и сетьюmysite-network
со следующими правилами:Направление
трафикаОписание Диапазон портов Протокол Источник /
назначениеCIDR блоки Входящий
balancer
80
TCP
Группа безопасности
mysite-sg-balancer
Входящий
ssh
22
TCP
CIDR
0.0.0.0/0
См. раздел Как создать инфраструктуру с помощью Terraform.
Импортируйте TLS-сертификат сайта в Certificate Manager
Чтобы пользователи могли обращаться к сайту по защищенному протоколу HTTPS (HTTP over TLS), для него должен быть выпущен TLS-сертификат. Для использования в L7-балансировщике сертификат нужно импортировать в Certificate Manager.
Если у вашего сайта нет сертификата, вы можете получить в Certificate Manager сертификат от Let's Encrypt®. В этом случае дополнительных действий после создания сертификата не потребуется: он — импортируется автоматически.
Чтобы импортировать уже имеющийся сертификат для сайта my-site.com
:
- В консоли управления
выберите сервис Certificate Manager. - Нажмите кнопку Добавить сертификат и выберите пункт Пользовательский сертификат.
- Укажите Имя сертификата:
mysite-cert
. - В поле Сертификат нажмите кнопку Добавить сертификат. Загрузите Файл с вашим сертификатом или укажите его Содержимое и нажмите кнопку Добавить.
- Если ваш сертификат выпущен сторонним центром сертификации, в поле Цепочка промежуточных сертификатов нажмите кнопку Добавить цепочку. Загрузите Файл с цепочкой сертификатов или укажите его Содержимое и нажмите кнопку Добавить.
- В поле Приватный ключ нажмите кнопку Добавить приватный ключ. Загрузите Файл с ключом или укажите его Содержимое и нажмите кнопку Добавить.
- Нажмите кнопку Создать.
См. раздел Как создать инфраструктуру с помощью Terraform.
Создайте группу ВМ для сайта
Чтобы создать группу ВМ для сайта my-site.com
:
-
В консоли управления
выберите сервис Compute Cloud. -
Откройте вкладку Группы виртуальных машин. Нажмите кнопку Создать группу виртуальных машин.
-
Укажите имя группы ВМ:
mysite-ig
. -
В блоке Распределение выберите несколько зон доступности, чтобы обеспечить отказоустойчивость хостинга.
-
В блоке Шаблон виртуальной машины нажмите кнопку Задать.
-
В блоке Выбор образа/загрузочного диска откройте вкладку Marketplace и нажмите кнопку Посмотреть больше. Выберите продукт LEMP и нажмите кнопку Использовать.
-
В блоке Вычислительные ресурсы:
- Выберите платформу ВМ.
- Укажите необходимое количество vCPU и объем RAM.
Для функционального тестирования сайта хватит минимальной конфигурации:
- Платформа —
Intel Cascade Lake
. - Гарантированная доля vCPU —
5%
. - vCPU —
2
. - RAM —
1 ГБ
.
-
В блоке Сетевые настройки выберите Сеть
mysite-network
, созданную ранее, и ее подсети. -
Выберите группу безопасности
mysite-sg-vms
, созданную ранее. -
Укажите данные для доступа на ВМ:
-
В поле Логин введите имя пользователя.
-
В поле SSH-ключ вставьте содержимое файла открытого ключа.
Пару ключей для подключения по SSH необходимо создать самостоятельно, см. раздел о подключении к ВМ по SSH.
Внимание
IP-адрес и имя хоста (FQDN) для подключения к ВМ назначаются ей при создании. Если вы выбрали вариант Без адреса в поле Публичный адрес, вы не сможете обращаться к ВМ из интернета.
-
-
Нажмите кнопку Сохранить.
-
В блоке Масштабирование укажите Размер группы ВМ — 2.
-
В блоке Интеграция с Application Load Balancer выберите опцию Создать целевую группу и укажите имя группы ВМ —
mysite-tg
. Подробнее о целевых группах. -
Нажмите кнопку Создать.
См. раздел Как создать инфраструктуру с помощью Terraform.
Создание группы ВМ может занять несколько минут. Когда группа перейдет в статус RUNNING
, а все ВМ в ней — в статус RUNNING_ACTUAL
, вы можете загрузить на них файлы веб-сайта.
Загрузите файлы сайта на ВМ
Чтобы проверить работу веб-серверов, загрузите на ВМ файлы index.html
.
<!DOCTYPE html>
<html>
<head>
<title>My site</title>
</head>
<body>
<h1>This is my site</h1>
</body>
</html>
Чтобы загрузить файл на ВМ:
-
В блоке Сеть на странице ВМ в консоли управления
найдите публичный IP-адрес ВМ. -
Подключитесь к ВМ по протоколу SSH.
-
Выдайте права на запись для вашего пользователя на директорию
/var/www/html
:UbuntuCentOSsudo chown -R "$USER":www-data /var/www/html
sudo chown -R "$USER":apache /var/www/html
-
Загрузите на ВМ файлы веб-сайта с помощью протокола SCP
.Linux/macOSWindowsИспользуйте утилиту командной строки
scp
:scp -r <путь_до_директории_с_файлами> <имя_пользователя_ВМ>@<IP-адрес_виртуальной_машины>:/var/www/html
С помощью программы WinSCP
скопируйте локальную директорию с файлами в директорию/var/www/html
на ВМ.
Создайте группу бэкендов
Целевую группу, созданную вместе с группой ВМ, нужно привязать к группе бэкендов с настройками распределения трафика.
Для бэкендов в группе будут созданы проверки состояния: балансировщик будет периодически отправлять проверочные запросы к ВМ и ожидать ответа в течение определенного периода.
Чтобы создать группу бэкендов для сайта my-site.com
:
- В консоли управления
выберите сервис Application Load Balancer. - Откройте вкладку Группы бэкендов. Нажмите кнопку Создать группу бэкендов.
- Укажите Имя группы бэкендов:
my-site-bg
. - В блоке Бэкенды нажмите кнопку Добавить.
- Укажите Имя бэкенда:
mysite-backend
. - В поле Целевые группы выберите группу
mysite-tg
. - Укажите Порт, на котором ВМ бэкенда будут принимать входящий трафик от балансировщика:
80
. - Нажмите кнопку Добавить проверку состояния.
- Укажите Порт, на котором ВМ бэкенда будут принимать проверочные соединения:
80
. - Укажите Путь, к которому будет обращаться балансировщик при проверке состояния:
/
. - Нажмите кнопку Создать.
См. раздел Как создать инфраструктуру с помощью Terraform.
Создайте и настройте HTTP-роутер
Группу бэкендов нужно привязать к HTTP-роутеру с правилами маршрутизации.
Чтобы создать HTTP-роутер:
- В консоли управления
выберите сервис Application Load Balancer. - Откройте вкладку HTTP-роутеры. Нажмите кнопку Создать HTTP-роутер.
- Укажите Имя HTTP-роутера:
mysite-router
. - Нажмите кнопку Добавить виртуальный хост.
- Укажите Имя виртуального хоста:
mysite-host
. - В поле Authority укажите доменное имя сайта:
my-site.com
. - Нажмите кнопку Добавить маршрут.
- Укажите Имя маршрута:
mysite-route
. - В поле Группа бэкендов выберите группу
my-site-bg
. - Нажмите кнопку Создать.
См. раздел Как создать инфраструктуру с помощью Terraform.
Создайте L7-балансировщик
- В консоли управления
выберите сервис Application Load Balancer. - Нажмите кнопку Создать L7-балансировщик.
- Укажите Имя балансировщика:
mysite-alb
. - В блоке Сетевые настройки выберите группу безопасности
mysite-sg-balancer
, созданную ранее. - Создайте обработчик для перенаправления HTTP-запросов на HTTPS:
- В блоке Обработчики нажмите кнопку Добавить обработчик.
- Укажите Имя обработчика:
listener-http
. - В блоке Публичный IP-адрес выберите тип
Список
и IP-адрес, зарезервированный ранее. - В поле Протокол выберите пункт
Перенаправлять на HTTPS
.
- Создайте обработчик HTTPS-запросов:
- Снова нажмите кнопку Добавить обработчик.
- Укажите Имя обработчика:
listener-https
. - В блоке Публичный IP-адрес выберите тип
Список
и IP-адрес, зарезервированный ранее. - В поле Протокол выберите пункт
HTTPS
. - В блоке Основной обработчик выберите сертификат
mysite-cert
и HTTP-роутерmysite-router
. - Добавьте обработчик SNI для сайта
my-site.com
:- Нажмите кнопку Добавить обработчик SNI.
- Укажите Имя обработчика SNI:
mysite-sni
. - В поле Имена серверов укажите
my-site.com
. - Выберите сертификат
mysite-cert
и HTTP-роутерmysite-router
.
- Нажмите кнопку Создать.
См. раздел Как создать инфраструктуру с помощью Terraform.
Настройте DNS для сайта
Доменное имя my-site.com
должно быть связано с IP-адресом L7-балансировщика с помощью записей DNS. Чтобы это сделать:
-
В консоли управления
выберите сервис Application Load Balancer. -
Скопируйте IP-адрес созданного балансировщика.
-
На сайте компании, которая предоставляет вам услуги DNS-хостинга, перейдите в настройки DNS.
-
Создайте или измените A-запись для
my-site.com
таким образом, чтобы она указывала на скопированный IP-адрес:my-site.com. A <IP-адрес_L7-балансировщика>
Если вы пользуетесь Yandex Cloud DNS, настройте запись по следующей инструкции:
Инструкция по настройке DNS-записей для Cloud DNSКонсоль управленияTerraform- В консоли управления
выберите сервис Cloud DNS. - Если у вас нет публичной зоны DNS, создайте ее:
- Нажмите кнопку Создать зону.
- Укажите Имя зоны:
tls-termination-dns
. - В поле Зона укажите доменное имя сайта с точкой в конце:
my-site.com.
- Выберите Тип зоны —
Публичная
. - Нажмите кнопку Создать.
- Создайте запись в зоне:
- В списке зон нажмите на зону
tls-termination-dns
. - Нажмите кнопку Создать запись.
- Поле Имя оставьте пустым, чтобы запись соответствовала доменному имени
my-site.com
(а не имени с субдоменом, напримерwww.my-site.com
). - Выберите Тип записи — A.
- В поле Значение вставьте скопированный IP-адрес балансировщика.
- Нажмите кнопку Создать.
- В списке зон нажмите на зону
См. раздел Как создать инфраструктуру с помощью Terraform.
- В консоли управления
Проверьте работу хостинга
Чтобы проверить работу хостинга, в браузере откройте сайт по адресу http://my-site.com
— должно произойти перенаправление на страницу https://my-site.com
, где уже подключен TLS-сертификат из Certificate Manager.
Удалите созданные ресурсы
Чтобы остановить работу хостинга и перестать платить за созданные ресурсы:
- Удалите нетарифицируемые ресурсы, которые блокируют удаление тарифицируемых ресурсов:
- Удалите группу ВМ
mysite-ig
. - Удалите зарезервированный статический публичный IP-адрес.
Как создать инфраструктуру с помощью Terraform
Terraform
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
Чтобы создать инфраструктуру для терминирования TLS-соединений с помощью Terraform:
-
Установите Terraform, получите данные для аутентификации и укажите источник для установки провайдера Yandex Cloud (раздел Настройте провайдер, шаг 1).
-
Подготовьте файлы с описанием инфраструктуры:
Готовая конфигурацияВручную-
Клонируйте репозиторий с конфигурационными файлами.
git clone https://github.com/yandex-cloud-examples/yc-alb-tls-termination.git
-
Перейдите в директорию с репозиторием. В ней должны появиться файлы:
tls-termination-config.tf
— конфигурация создаваемой инфраструктуры.tls-terminationg.auto.tfvars
— файл с пользовательскими данными.
- Создайте папку для конфигурационных файлов.
- Создайте в папке:
-
Конфигурационный файл
tls-termination-config.tf
:tls-termination-config.tf# Объявление переменных для конфиденциальных параметров variable "folder_id" { type = string } variable "vm_user" { type = string } variable "ssh_key_path" { type = string } variable "domain" { type = string } variable "certificate" { type = string } variable "private_key" { type = string } # Добавление прочих переменных locals { sa_name = "ig-sa" network_name = "network-1" subnet_name_a = "subnet-a" subnet_name_b = "subnet-b" sg_name_balancer = "sg-balancer" sg_name_vms = "sg-vms" cert_name = "imported-cert" site_ig_name = "site-ig" alb_bg_name = "alb-bg" alb_host_name = "alb-host" alb_router_name = "alb-router" alb_name = "alb" alb_zone_name = "alb-zone" } # Настройка провайдера terraform { required_providers { yandex = { source = "yandex-cloud/yandex" version = ">= 0.47.0" } } } provider "yandex" { folder_id = var.folder_id } # Создание сервисного аккаунта для группы ВМ resource "yandex_iam_service_account" "ig-sa" { name = local.sa_name description = "service account to manage IG" } resource "yandex_resourcemanager_folder_iam_member" "editor" { folder_id = var.folder_id role = "editor" member = "serviceAccount:${yandex_iam_service_account.ig-sa.id}" } # Создание облачной сети resource "yandex_vpc_network" "network-1" { name = local.network_name } resource "yandex_vpc_subnet" "subnet-a" { name = local.subnet_name_a zone = "ru-central1-a" v4_cidr_blocks = ["192.168.1.0/24"] network_id = yandex_vpc_network.network-1.id } resource "yandex_vpc_subnet" "subnet-b" { name = local.subnet_name_b zone = "ru-central1-b" v4_cidr_blocks = ["192.168.2.0/24"] network_id = yandex_vpc_network.network-1.id } # Создание статического публичного IP-адреса resource "yandex_vpc_address" "stat_address" { name = "alb-static-address" external_ipv4_address { zone_id = "ru-central1-a" } } # Создание групп безопасности resource "yandex_vpc_security_group" "sg-balancer" { name = local.sg_name_balancer network_id = yandex_vpc_network.network-1.id egress { protocol = "ANY" description = "any" v4_cidr_blocks = ["0.0.0.0/0"] from_port = 0 to_port = 65535 } ingress { protocol = "TCP" description = "ext-http" v4_cidr_blocks = ["0.0.0.0/0"] port = 80 } ingress { protocol = "TCP" description = "ext-https" v4_cidr_blocks = ["0.0.0.0/0"] port = 443 } ingress { protocol = "TCP" description = "healthchecks" predefined_target = "loadbalancer_healthchecks" port = 30080 } } resource "yandex_vpc_security_group" "sg-vms" { name = local.sg_name_vms network_id = yandex_vpc_network.network-1.id ingress { protocol = "TCP" description = "balancer" security_group_id = yandex_vpc_security_group.sg-balancer.id port = 80 } ingress { protocol = "TCP" description = "ssh" v4_cidr_blocks = ["0.0.0.0/0"] port = 22 } } # Импорт TLS-сертификат сайта resource "yandex_cm_certificate" "imported-cert" { name = local.cert_name self_managed { certificate = "${file("${var.certificate}")}" private_key = "${file("${var.private_key}")}" } } # Создание группу ВМ для сайта resource "yandex_compute_image" "lemp-image" { source_family = "lemp" } resource "yandex_compute_instance_group" "site-ig" { name = local.site_ig_name folder_id = var.folder_id service_account_id = "${yandex_iam_service_account.ig-sa.id}" instance_template { platform_id = "standard-v2" resources { memory = 1 cores = 2 core_fraction = 5 } boot_disk { mode = "READ_WRITE" initialize_params { image_id = yandex_compute_image.lemp-image.id } } network_interface { network_id = yandex_vpc_network.network-1.id subnet_ids = [yandex_vpc_subnet.subnet-a.id,yandex_vpc_subnet.subnet-b.id] security_group_ids = [yandex_vpc_security_group.sg-vms.id] nat = true } metadata = { user-data = "#cloud-config\nusers:\n - name: ${var.vm_user}\n groups: sudo\n shell: /bin/bash\n sudo: 'ALL=(ALL) NOPASSWD:ALL'\n ssh-authorized-keys:\n - ${file("${var.ssh_key_path}")}" } } scale_policy { fixed_scale { size = 2 } } allocation_policy { zones = ["ru-central1-a","ru-central1-b"] } deploy_policy { max_unavailable = 1 max_expansion = 0 } application_load_balancer { target_group_name = "alb-tg" } } # Создание группу бэкендов resource "yandex_alb_backend_group" "alb-bg" { name = local.alb_bg_name http_backend { name = "alb-backend" weight = 1 port = 80 target_group_ids = [yandex_compute_instance_group.site-ig.application_load_balancer[0].target_group_id] healthcheck { timeout = "10s" interval = "2s" healthcheck_port = 80 http_healthcheck { path = "/" } } } } # Создание HTTP-роутера resource "yandex_alb_http_router" "alb-router" { name = local.alb_router_name } resource "yandex_alb_virtual_host" "alb-host" { name = local.alb_host_name authority = ["${var.domain}"] http_router_id = yandex_alb_http_router.alb-router.id route { name = "alb-route" http_route { http_route_action { backend_group_id = yandex_alb_backend_group.alb-bg.id timeout = "60s" } } } } # Создание L7-балансировщика resource "yandex_alb_load_balancer" "alb" { name = local.alb_name network_id = yandex_vpc_network.network-1.id security_group_ids = [yandex_vpc_security_group.sg-balancer.id] allocation_policy { location { zone_id = "ru-central1-a" subnet_id = yandex_vpc_subnet.subnet-a.id } location { zone_id = "ru-central1-b" subnet_id = yandex_vpc_subnet.subnet-b.id } } listener { name = "list-http" endpoint { address { external_ipv4_address { address = yandex_vpc_address.stat_address.external_ipv4_address[0].address } } ports = [ 80 ] } http { redirects { http_to_https = true } } } listener { name = "listener-http" endpoint { address { external_ipv4_address { address = yandex_vpc_address.stat_address.external_ipv4_address[0].address } } ports = [ 443 ] } tls { default_handler { http_handler { http_router_id = yandex_alb_http_router.alb-router.id } certificate_ids = [yandex_cm_certificate.imported-cert.id] } sni_handler { name = "mysite-sni" server_names = ["${var.domain}"] handler { http_handler { http_router_id = yandex_alb_http_router.alb-router.id } certificate_ids = [yandex_cm_certificate.imported-cert.id] } } } } } # Создание DNS-зоны resource "yandex_dns_zone" "alb-zone" { name = local.alb_zone_name description = "Public zone" zone = "${var.domain}." public = true } # Создание ресурсной записи в DNS-зоне resource "yandex_dns_recordset" "alb-record" { zone_id = yandex_dns_zone.alb-zone.id name = "${var.domain}." ttl = 600 type = "A" data = [yandex_alb_load_balancer.alb.listener[0].endpoint[0].address[0].external_ipv4_address[0].address] }
-
Файл с пользовательскими данными
tls-termination.auto.tfvars
:tls-termination.auto.tfvarsfolder_id = "<идентификатор_каталога>" vm_user = "<имя_пользователя_ВМ>" ssh_key_path = "<путь_к_публичному_SSH-ключу>" domain = "<домен>" certificate = "<путь_к_файлу_с_сертификатом>" private_key = "<путь_к_файлу_с_закрытым_ключом>"
-
Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера:
- yandex_vpc_network
- yandex_vpc_subnet
- yandex_vpc_address
- yandex_vpc_security_group
- yandex_cm_certificate
- yandex_compute_image
- yandex_iam_service_account
- yandex_resourcemanager_folder_iam_member
- yandex_compute_instance_group
- yandex_alb_backend_group
- yandex_alb_http_router
- yandex_alb_load_balancer
- yandex_dns_zone
- yandex_dns_recordset
-
-
В файле
tls-termination.auto.tfvars
задайте пользовательские параметры:folder_id
— идентификатор каталога.vm_user
— имя пользователя ВМ.ssh_key_path
— путь к файлу с публичным SSH-ключом. Подробнее см. Создание пары ключей SSH.domain
— домен, на котором будет размещен сайт.certificate
— путь к файлу с пользовательским сертификатом.private_key
— путь к файлу с закрытым ключом пользовательского сертификата.
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-