Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Terraform позволяет определять, просматривать и развертывать облачную инфраструктуру. Используя Terraform, вы создаёте файлы конфигурации, применяя синтаксис HCL. Синтаксис HCL позволяет указать поставщика облачных служб, таких как Azure, и элементы, составляющие облачную инфраструктуру. После создания файлов конфигурации вы создаете план выполнения, который позволяет предварительно просмотреть изменения в инфраструктуре до их внедрения. После того как вы проверите изменения, примените план выполнения для развертывания инфраструктуры.
Используйте azapi_data_plane_resource для управления ресурсами плоскости данных Azure в Terraform. В этом примере вы настраиваете контакты сертификатов для Azure Key Vault.
Основные понятия о том, как работает платформа плоскости данных и parent_id шаблоны, см. в разделе "Общие сведения о платформе плоскости данных AzAPI".
- Создание Key Vault с помощью поставщика AzureRM
- Используйте
azapi_data_plane_resourceдля настройки контактов сертификатов
Необходимые условия
- подписка на Azure: Если у вас нет подписки на Azure, создайте бесплатную учетную запись прежде чем начать.
Настройте Terraform: если вы еще не сделали этого, настройте Terraform с помощью одного из следующих параметров:
При входе на портал Azure с учетной записью Майкрософт используется подписка Azure по умолчанию для этой учетной записи.
Terraform автоматически проходит проверку подлинности с помощью сведений из подписки Azure по умолчанию.
Запустите az account show , чтобы проверить текущую учетную запись Майкрософт и подписку Azure.
az account show
Все изменения, внесенные с помощью Terraform, находятся в отображаемой подписке Azure. Если это нужно, пропустите остальную часть этой статьи.
Реализуйте код Terraform
Создайте каталог для тестирования примера кода Terraform и сделайте его текущим каталогом.
Создайте файл с именем
providers.tfи вставьте следующий код:terraform { required_providers { azapi = { source = "Azure/azapi" version = "~> 2.0" } azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } random = { source = "hashicorp/random" version = "~> 3.0" } } } provider "azurerm" { features { key_vault { purge_soft_delete_on_destroy = true recover_soft_deleted_key_vaults = true } } } provider "azapi" {}Создайте файл с именем
variables.tfи вставьте следующий код:variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random value to create a unique name." }Создайте файл с именем
main.tfи вставьте следующий код:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "random_string" "kv_suffix" { length = 6 upper = false special = false } resource "azurerm_resource_group" "example" { location = var.resource_group_location name = random_pet.rg_name.id } data "azurerm_client_config" "current" {} resource "azurerm_key_vault" "example" { name = "kv-${random_string.kv_suffix.result}" location = azurerm_resource_group.example.location resource_group_name = azurerm_resource_group.example.name tenant_id = data.azurerm_client_config.current.tenant_id sku_name = "standard" access_policy { tenant_id = data.azurerm_client_config.current.tenant_id object_id = data.azurerm_client_config.current.object_id certificate_permissions = [ "ManageContacts", ] } } resource "azapi_data_plane_resource" "certificate_contacts" { type = "Microsoft.KeyVault/vaults/certificates/contacts@7.3" parent_id = trimsuffix(trimprefix(azurerm_key_vault.example.vault_uri, "https://"), "/") name = "default" body = { contacts = [ { emailAddress = "admin@contoso.com" name = "Admin Contact" phone = "555-555-0100" }, { emailAddress = "ops@contoso.com" name = "Operations" } ] } }Ключевые моменты о
azapi_data_plane_resource:- Поле
typeиспользует формат<resource-type>@<api-version>API плоскости данных. - Имя хоста
parent_id, используемое в качестве конечной точки плоскости данных (без префиксаhttps://), а не в качестве идентификатора ресурса ARM. - Поле
nameопределяет конкретный ресурс в родительском элементе. Для контактов сертификатов Key Vault значение всегдаdefault.
- Поле
Создайте файл с именем
outputs.tfи вставьте следующий код:output "resource_group_name" { value = azurerm_resource_group.example.name } output "key_vault_name" { value = azurerm_key_vault.example.name } output "certificate_contacts" { value = azapi_data_plane_resource.certificate_contacts.output }
Запустите terraform init, чтобы инициализировать развертывание Terraform. Эта команда загружает поставщика Azure, необходимого для управления вашими ресурсами в Azure.
terraform init -upgrade
Основные моменты:
- Параметр
-upgradeобновляет необходимые плагины провайдера до самой последней версии, которая соответствует ограничениям версии конфигурации.
Запустите команду terraform plan, чтобы создать план выполнения.
terraform plan -out main.tfplan
Основные моменты:
- Команда
terraform planсоздает план выполнения, но не выполняет его. Вместо этого он определяет, какие действия необходимы для создания конфигурации, указанной в ваших конфигурационных файлах. Данный шаблон позволяет вам убедиться, что план выполнения соответствует вашим ожиданиям, прежде чем вносить какие-либо изменения в реальные ресурсы. - Необязательный параметр
-outпозволяет указать выходной файл для плана. Использование параметра-outобеспечивает, что план, который вы просмотрели, будет применен точно в таком виде.
Выполните команду terraform apply, чтобы применить план выполнения к вашей облачной инфраструктуре.
terraform apply main.tfplan
Основные моменты:
- Пример команды
terraform applyпредполагает, что вы ранее выполнили командуterraform plan -out main.tfplan. - Если вы указали другое имя файла для параметра
-out, используйте то же имя файла при вызовеterraform apply. - Если вы не использовали параметр
-out, вызовитеterraform applyбез параметров.
Проверка результатов
Запустите az keyvault certificate contact list , чтобы получить контакты сертификата.
az keyvault certificate contact list --vault-name <key_vault_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