Краткое руководство. Создание профиля и конечной точки Azure CDN с помощью Terraform
Внимание
Azure CDN standard от Корпорации Майкрософт (классическая версия) будет прекращена 30 сентября 2027 г. Чтобы избежать нарушений работы службы, важно перенести профили Azure CDN уровня "Стандартный" от Майкрософт (классический) на уровень Azure Front Door standard или Premium к 30 сентября 2027 года. Дополнительные сведения см. в статье Azure CDN Standard от майкрософт (классическая версия).
Azure CDN из Эдгио будет прекращено 4 ноября 2025 г. Перед этой датой необходимо перенести рабочую нагрузку в Azure Front Door. Дополнительные сведения см. в статье Azure CDN из Edgio для выхода на пенсию.
В этой статье показано, как использовать Terraform для создания профиля и конечной точки Azure CDN с помощью Terraform.
Terraform поддерживает определение, предварительный просмотр и развертывание облачной инфраструктуры. С помощью Terraform можно создавать файлы конфигурации с применением синтаксиса HCL. Синтаксис HCL позволяет указать поставщика облачных служб, например Azure, и элементы, составляющие облачную инфраструктуру. После создания файлов конфигурации создается план выполнения, который позволяет предварительно просматривать изменения инфраструктуры до их развертывания. После проверки изменений примените план выполнения для развертывания инфраструктуры.
Вы узнаете, как выполнять следующие задачи:
- Создание случайного имени домашних животных для имени группы ресурсов Azure с помощью random_pet
- Создание группы ресурсов Azure с помощью azurerm_resource_group
- Создание случайной строки для имени конечной точки CDN с помощью random_string
- Создание профиля Azure CDN с помощью azurerm_cdn_profile
- Создание конечной точки Azure CDN с помощью azurerm_cdn_endpoint
Необходимые компоненты
Реализация кода Terraform
Примечание.
Пример кода для этой статьи находится в репозитории Azure Terraform GitHub. Вы можете просмотреть файл журнала, содержащий результаты теста из текущих и предыдущих версий Terraform.
См. другие статьи и примеры кода, в которых показано, как использовать Terraform для управления ресурсами Azure.
Создайте каталог для тестирования и выполнения примера кода Terraform и сделайте его текущим каталогом.
Создайте файл с именем
main.tf
и вставьте следующий код:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { name = random_pet.rg_name.id location = var.resource_group_location } resource "random_string" "aazurerm_cdn_profile_name" { length = 13 lower = true numeric = false special = false upper = false } resource "azurerm_cdn_profile" "profile" { name = "profile-${random_string.azurerm_cdn_endpoint_name.result}" location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name sku = var.cdn_sku } resource "random_string" "azurerm_cdn_endpoint_name" { length = 13 lower = true numeric = false special = false upper = false } resource "azurerm_cdn_endpoint" "endpoint" { name = "endpoint-${random_string.azurerm_cdn_endpoint_name.result}" profile_name = azurerm_cdn_profile.profile.name location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name is_http_allowed = true is_https_allowed = true querystring_caching_behaviour = "IgnoreQueryString" is_compression_enabled = true content_types_to_compress = [ "application/eot", "application/font", "application/font-sfnt", "application/javascript", "application/json", "application/opentype", "application/otf", "application/pkcs7-mime", "application/truetype", "application/ttf", "application/vnd.ms-fontobject", "application/xhtml+xml", "application/xml", "application/xml+rss", "application/x-font-opentype", "application/x-font-truetype", "application/x-font-ttf", "application/x-httpd-cgi", "application/x-javascript", "application/x-mpegurl", "application/x-opentype", "application/x-otf", "application/x-perl", "application/x-ttf", "font/eot", "font/ttf", "font/otf", "font/opentype", "image/svg+xml", "text/css", "text/csv", "text/html", "text/javascript", "text/js", "text/plain", "text/richtext", "text/tab-separated-values", "text/xml", "text/x-script", "text/x-component", "text/x-java-source", ] origin { name = "origin1" host_name = var.origin_url } }
Создайте файл с именем
outputs.tf
и вставьте следующий код:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "cdn_profile_name" { value = azurerm_cdn_profile.profile.name } output "cdn_endpoint_endpoint_name" { value = azurerm_cdn_endpoint.endpoint.name } output "cdn_endpoint_fqdn" { value = azurerm_cdn_endpoint.endpoint.fqdn }
Создайте файл с именем
providers.tf
и вставьте следующий код:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }
Создайте файл с именем
variables.tf
и вставьте следующий код:variable "resource_group_location" { type = string description = "Location for all resources." default = "eastus" } variable "resource_group_name_prefix" { type = string description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." default = "rg" } variable "origin_url" { type = string description = "Url of the origin." default = "www.contoso.com" } variable "cdn_sku" { type = string description = "CDN SKU names." default = "Standard_Microsoft" validation { condition = contains(["Standard_Akamai", "Standard_Microsoft", "Standard_Verizon", "Premium_Verizon"], var.cdn_sku) error_message = "The cdn_sku must be one of the following: Standard_Akamai, Standard_Microsoft, Standard_Verizon, Premium_Verizon." } }
Инициализация Terraform
Запустите terraform init, чтобы инициализировать развертывание Terraform. Эта команда скачивает поставщик Azure, необходимый для управления ресурсами Azure.
terraform init -upgrade
Основные моменты:
- Параметр
-upgrade
обновляет необходимые подключаемые модули поставщика до последней версии, которая соответствует ограничениям версии конфигурации.
Создание плана выполнения Terraform
Чтобы создать план выполнения, выполните terraform plan.
terraform plan -out main.tfplan
Основные моменты:
- Команда
terraform plan
создает план выполнения, но не выполняет его. Вместо этого она определяет, какие действия необходимы для создания конфигурации, заданной в файлах конфигурации. Этот шаблон позволяет проверить, соответствует ли план выполнения вашим ожиданиям, прежде чем вы начнете вносить изменения в фактические ресурсы. - Необязательный параметр
-out
позволяет указать выходной файл для плана. Использование параметра-out
гарантирует, что проверяемый план полностью соответствует применяемому.
Применение плана выполнения Terraform
Выполните terraform apply, чтобы применить план выполнения к вашей облачной инфраструктуре.
terraform apply main.tfplan
Основные моменты:
- В примере
terraform apply
команды предполагается, что вы ранее выполнили.terraform plan -out main.tfplan
- Если для параметра
-out
указано другое имя файла, используйте то же имя в вызове кterraform apply
. - Если вы не использовали параметр
-out
, вызовитеterraform apply
без параметров.
Проверка результатов
Получите имя группы ресурсов Azure, в которой были созданы профиль и конечная точка Azure CDN.
resource_group_name=$(terraform output -raw resource_group_name)
Получите имя профиля CDN.
cdn_profile_name=$(terraform output -raw cdn_profile_name)
Получите имя конечной точки CDN.
cdn_endpoint_endpoint_name=$(terraform output -raw cdn_endpoint_endpoint_name)
Запустите az cdn custom-domain show , чтобы отобразить сведения о пользовательском домене, созданном в этой статье.
az cdn endpoint show --resource-group $resource_group_name \ --profile-name $cdn_profile_name \ --name $cdn_endpoint_endpoint_name
Очистка ресурсов
Если вам больше не нужны ресурсы, созданные через Terraform, выполните следующие действия:
Выполните команду terraform plan и укажите флаг
destroy
.terraform plan -destroy -out main.destroy.tfplan
Основные моменты:
- Команда
terraform plan
создает план выполнения, но не выполняет его. Вместо этого она определяет, какие действия необходимы для создания конфигурации, заданной в файлах конфигурации. Этот шаблон позволяет проверить, соответствует ли план выполнения вашим ожиданиям, прежде чем вы начнете вносить изменения в фактические ресурсы. - Необязательный параметр
-out
позволяет указать выходной файл для плана. Использование параметра-out
гарантирует, что проверяемый план полностью соответствует применяемому.
- Команда
Выполните команду terraform apply, чтобы применить план выполнения.
terraform apply main.destroy.tfplan
Устранение неполадок с Terraform в Azure
Устранение распространенных проблем при использовании Terraform в Azure