Внимание
У Вас отключена поддержка Cookie в браузере. Возможно некорректное отображение сайта!

Как управлять CDN с помощью Terraform

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

Сейчас с помощью Terraform можно управлять не только облаком, но и CDN. Рассказываем как.

Несколько слов о Terraform

Terraform — это open-source-инструмент, работающий по принципу «инфраструктура как код» (Infrastructure as Code). Он позволяет описывать всю инфраструктуру с помощью набора конфигурационных файлов и тем самым задавать правила, как всё должно быть настроено.

  • Вы пишете код.
  • Terraform делает вызовы к API и приводит всё к описанному состоянию.

Как управлять CDN с помощью Terraform

Язык программирования в Terraform — HashiCorp Configuration Language, но при желании можно использовать JSON.

Плюсы управления CDN через Terraform:

  • Не нужно создавать ресурсы и задавать настройки вручную в личном кабинете.
  • В основе Terraform лежит концепция неизменяемой инфраструктуры — меняя код, вы создаёте новую конфигурацию. А это значит, что любые изменения можно очень легко откатить обратно, выбрав предыдущую версию.
  • Для управления CDN вам нужно только указать, как всё должно работать. А Terraform сам определит наиболее оптимальные способы, как привести сеть к этому состоянию.

Как работать с Terraform в G‑Core Labs CDN

С помощью нашего Terraform-провайдера вы можете управлять:

  • группами источников;
  • CDN-ресурсами;
  • правилами;
  • пользовательскими сертификатами.

Для ресурсов и правил вы можете задавать настройки. В настоящее время в Terraform доступны:

  • Кеширование (edge_cache_settings) — с помощью этой опции вы можете установить время хранения контента в кеше CDN-серверов.
  • Заголовок Host (host_header) — устанавливает определённый заголовок, который CDN-серверы будут использовать при запросе контента с источника. Если эта опция не задана, значение заголовка Host будет совпадать с первым CNAME.

К ресурсу вы также можете добавить пользовательский сертификат.

Как установить и настроить Terraform

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

Дальше вам нужно создать конфигурационный файл с расширением .tf. В таких файлах вы будете писать код.

Чтобы Terraform мог работать с сервисами G‑Core Labs, нужно указать провайдера и задать его настройки.

terraform { required_version = ">= 0.13.0" required_providers { gcore = { source = "G-Core/gcorelabs" version = "~>0.1.17" } } }

Если вы собираетесь использовать Terraform только для работы с CDN, следующая часть кода должна выглядеть так:

provider gcore { user_name = "test" password = "test" gcore_platform = "https://api.gcdn.co" gcore_cdn_api = "https://api.gcdn.co" }

А если вы хотите с помощью Terraform управлять и CDN, и облаком, код будет таким:

provider gcore { user_name = "test" password = "test" gcore_platform = "https://api.gcdn.co" gcore_api = "https://api.cloud.gcorelabs.com" gcore_cdn_api = "https://api.gcdn.co" }

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

Дальше вы можете создавать ресурсы и выполнять различные команды.

Как использовать Terraform

После настройки провайдера можно задавать конфигурации ресурсов и устанавливать правила.

Группы источников

Вот так, например, создаётся группа источников:

resource "gcore_cdn_origingroup" "origin_group_1" { name = "origin_group_1" use_next = true origin { source = "example.com" enabled = false } origin { source = "mirror.example.com" enabled = true backup = false } }

CDN-ресурсы

Вот так будет выглядеть код для создания CDN-ресурса:

resource "gcore_cdn_resource" "cdn_example_com" { cname = "cdn.example.com" origin_group = gcore_cdn_origingroup.origin_group_1.id origin_protocol = "MATCH" secondary_hostnames = ["cdn2.example.com"] }

В поле origin_protocol вы указываете, какой протокол будут использовать CDN-серверы, запрашивая контент с источника. Помимо MATCH, в этом поле можно указать HTTPS или HTTP.

К ресурсу вы можете добавить одну из доступных опций: кеширование (edge_cache_settings) или заголовок Host (host_header). Вот так, например, будет выглядеть описание ресурса с включённой опцией заголовка Host:

resource "gcore_cdn_resource" "cdn_example_com" { cname = "cdn.example.com" origin_group = gcore_cdn_origingroup.origin_group_1.id origin_protocol = "MATCH" secondary_hostnames = ["cdn2.example.com"] options { host_header { enabled = true value = "mirror.example.com" } } }

Пользовательские сертификаты

SSL-сертификаты создаются следующим образом:

variable "cert" {

type = string sensitive = true }

variable “private_key” { type = string sensitive = true }

resource “gcore_cdn_sslcert” “cdnopt_cert” { name = “Test cert for cdnopt_bookatest_by” cert = var.cert private_key = var.private_key }

В поле name нужно написать название SSL-сертификата. Оно должно быть уникальным. В поле сert указывается публичная часть SSL-сертификата, в private_key — приватный ключ сертификата.

Чтобы добавить сертификат к ресурсу, понадобится следующий код:

resource "gcore_cdn_resource" "cdn_example_com" { cname = "cdn.example.com" origin_group = gcore_cdn_origingroup.origin_group_1.id origin_protocol = "MATCH" secondary_hostnames = ["cdn2.example.com"] ssl_enabled = true ssl_data = gcore_cdn_sslcert.cdnopt_cert.id }

Правила

Правила задаются после создания всех ресурсов и групп источников.

Пример кода:

resource "gcore_cdn_rule" "cdn_example_com_rule_1" { resource_id = gcore_cdn_resource.cdn_example_com.id name = "All images" rule = "/folder/images/*.png" rule_type = 0 }

В поле name вы указываете название правила, в поле rule — шаблон, который определяет, когда правило сработает.

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

Команды

После того как вы описали всю инфраструктуру, вам понадобятся две команды:

  • terraform plan — покажет, какие изменения Terraform собирается внести. Если вы допустили ошибки в коде, Terraform укажет на них.
  • terraform apply — внесёт изменения в инфраструктуру. Используйте её после проверки и исправления ошибок. Когда вы введёте команду, Terraform попросит вас подтвердить действие — введите yes.

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

Больше подробностей о работе с нашим Terraform-провайдером вы найдёте в документации.

Ещё не подключены к G‑Core Labs CDN? Используйте мощную и надёжную сеть, чтобы доставлять тяжёлый контент быстро и безопасно в любую точку мира.

Подключите CDN бесплатно или воспользуйтесь консультацией наших специалистов, чтобы подобрать лучшее решение для ваших задач.

Подпишитесь на полезную рассылку

Выгодные предложения и важные новости раз в месяц. Без спама