Поделиться через


Краткое руководство: Создание центра уведомлений Azure с помощью Terraform

В этой статье используется Terraform для создания пространства имен Центров уведомлений Azure и концентратора уведомлений. Имя каждого ресурса создается случайным образом, чтобы избежать конфликтов именования.

Центры уведомлений Azure обеспечивают простой в использовании и масштабируемый механизм отправки push-уведомлений, который позволяет отправлять уведомления на любую платформу (iOS, Android, Windows, Kindle и т. д.) c любой серверной части (облачной или локальной). Дополнительные сведения о службе см. в статье "Что такое Центры уведомлений Azure".

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

В этой статье вы узнаете, как:

  • Создайте случайное значение для имени группы ресурсов Azure с помощью random_pet.
  • Создайте группу ресурсов Azure с помощью azurerm_resource_group.
  • Создайте случайное значение для имени пространства имен Центра уведомлений Azure с помощью random_string.
  • Создайте пространство имен Центра уведомлений Azure с помощью azurerm_notification_hub_namespace.
  • Создайте случайное значение для имени Центра уведомлений Azure с помощью random_string.
  • Создайте Центр уведомлений Azure с помощью azurerm_notification_hub.

Предпосылки

Реализуйте код Terraform

Замечание

Пример кода для этой статьи находится в репозитории Azure Terraform GitHub. Вы можете просмотреть файл журнала, содержащий результаты теста из текущих и предыдущих версий Terraform.

Дополнительные статьи и пример кода, демонстрирующие использование Terraform для управления ресурсами Azure

  1. Создайте каталог для тестирования и выполнения примера кода Terraform и сделайте его текущим каталогом.

  2. Создайте файл с именем 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 {}
    }
    
  3. Создайте файл с именем 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" "azurerm_notification_hub_namespace_name" {
      length  = 25
      upper   = false
      numeric = false
      special = false
    }
    
    resource "azurerm_notification_hub_namespace" "namespace" {
      name                = "hubns-${random_string.azurerm_notification_hub_namespace_name.result}"
      resource_group_name = azurerm_resource_group.rg.name
      location            = azurerm_resource_group.rg.location
      namespace_type      = "NotificationHub"
      sku_name            = "Free"
    }
    
    resource "random_string" "azurerm_notification_hub_name" {
      length  = 25
      upper   = false
      numeric = false
      special = false
    }
    
    resource "azurerm_notification_hub" "hub" {
      name                = "hub-${random_string.azurerm_notification_hub_name.result}"
      resource_group_name = azurerm_resource_group.rg.name
      namespace_name      = azurerm_notification_hub_namespace.namespace.name
      location            = azurerm_resource_group.rg.location
    }
    
  4. Создайте файл с именем variables.tf и вставьте следующий код:

    variable "resource_group_location" {
      type        = string
      default     = "eastus"
      description = "Location for all resources."
    }
    
    variable "resource_group_name_prefix" {
      type        = string
      default     = "rg"
      description = "Prefix of the resource group name that's combined with a random value so name is unique in your Azure subscription."
    }
    
  5. Создайте файл с именем outputs.tf и вставьте следующий код:

    output "resource_group_name" {
      value = azurerm_resource_group.rg.name
    }
    
    output "notification_hub_namespace_name" {
      value = azurerm_notification_hub_namespace.namespace.name
    }
    
    output "notification_hub__name" {
      value = azurerm_notification_hub.hub.name
    }
    

Инициализируйте 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 без параметров.

Проверка результатов

  1. Получите имя группы ресурсов Azure.

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. Получите имя пространства имен.

    notification_hub_namespace_name=$(terraform output -raw notification_hub_namespace_name)
    
  3. Запустите az notification-hub list , чтобы отобразить центры для указанного пространства имен.

    az notification-hub list \
        --resource-group $resource_group_name \
        --namespace-name $notification_hub_namespace_name
    

Очистите ресурсы

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

  1. Запустите terraform plan и укажите destroy опцию.

    terraform plan -destroy -out main.destroy.tfplan
    

    Ключевые моменты:

    • Команда terraform plan создает план выполнения, но не выполняет его. Вместо этого он определяет, какие действия необходимы для создания конфигурации, указанной в ваших конфигурационных файлах. Данный шаблон позволяет вам убедиться, что план выполнения соответствует вашим ожиданиям, прежде чем вносить какие-либо изменения в реальные ресурсы.
    • Необязательный параметр -out позволяет указать выходной файл для плана. Использование параметра -out обеспечивает, что план, который вы просмотрели, будет применен точно в таком виде.
  2. Чтобы применить план выполнения, запустите terraform apply.

    terraform apply main.destroy.tfplan
    

Устранение неполадок с Terraform в Azure

Устранение распространенных проблем при использовании Terraform в Azure

Дальнейшие шаги