Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Terraform позволяет определять, просматривать и развертывать облачную инфраструктуру. Используя Terraform, вы создаёте файлы конфигурации, применяя синтаксис HCL. Синтаксис HCL позволяет указать поставщика облачных служб, таких как Azure, и элементы, составляющие облачную инфраструктуру. После создания файлов конфигурации вы создаете план выполнения, который позволяет предварительно просмотреть изменения в инфраструктуре до их внедрения. После того как вы проверите изменения, примените план выполнения для развертывания инфраструктуры.
Используйте azapi_resource_action в качестве управляемого ресурса Terraform для выполнения императивных операций, изменяющих состояние, в ресурсах Azure. В этом примере создается учетная запись хранения Azure, а затем смена ключей доступа.
azapi_resource_action имеет две формы использования:
-
Ресурс: выполняет операцию изменения состояния во время
terraform apply. Terraform отслеживает действие в состоянии и может при необходимости изменить его.terraform destroy - Источник данных: выполняет операцию только для чтения во время планирования. См. раздел Краткое руководство по источнику данных ресурсов действий для данного сценария.
Используйте форму ресурса, когда нужно, чтобы Terraform выполнял операцию в Azure, которая не основана на стандартном жизненном цикле создания, чтения, обновления или удаления, например, при ротации учетных данных, запуске или остановке виртуальной машины или запуске отказоустойчивости.
- Создание учетной записи хранения с помощью поставщика AzureRM
- Обновите ключ доступа к учетной записи хранения с помощью
azapi_resource_action
Необходимые условия
- подписка на 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 {} } 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." } variable "storage_account_name_prefix" { type = string default = "st" description = "Prefix of the storage account 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" "storage_suffix" { length = 8 upper = false special = false } resource "azurerm_resource_group" "example" { location = var.resource_group_location name = random_pet.rg_name.id } resource "azurerm_storage_account" "example" { name = "${var.storage_account_name_prefix}${random_string.storage_suffix.result}" resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location account_tier = "Standard" account_replication_type = "LRS" } resource "azapi_resource_action" "regenerate_key" { type = "Microsoft.Storage/storageAccounts@2023-01-01" resource_id = azurerm_storage_account.example.id action = "regenerateKey" method = "POST" body = { keyName = "key1" } }Ключевые моменты использования
azapi_resource_actionв качестве ресурса:- Поле
actionуказывает операцию ARM для выполнения. Для смены ключа учетной записи хранения используйтеregenerateKey. - Поле
methodзадает метод HTTP. Большинство императивных действий используютPOST. - Атрибут
bodyпередает данные в действие. Для повторного создания ключей укажите, какой ключ (key1илиkey2) следует повернуть. - Действие выполняется во время
terraform applyи отслеживается в состоянии Terraform.
- Поле
Создайте файл с именем
outputs.tfи вставьте следующий код:output "resource_group_name" { value = azurerm_resource_group.example.name } output "storage_account_name" { value = azurerm_storage_account.example.name }
Запустите 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без параметров.
Проверка результатов
После terraform apply завершения ключ учетной записи хранения был повернут. Чтобы проверить смену ключей, проверьте ключи учетной записи хранения в Azure.
Запустите az storage account keys list, чтобы просмотреть ключи учетной записи хранения.
az storage account keys list \
--resource-group <resource_group_name> \
--account-name <storage_account_name>
В value поле показан текущий ключ.
Примеры других ресурсных действий
Ресурс azapi_resource_action работает с множеством операций Azure. Ниже приведены распространенные примеры.
-
Виртуальные машины:
deallocate,start,restart,powerOff,reimage -
Key Vaults:
purge(для обратимо удаленных хранилищ)rotate(для управляемых ключей) -
Службы приложений:
swap(для слотов развертывания),restart -
Базы данных:
failover,promote - Compute resources: любая операция, предоставляемая REST API Azure, которая изменяет состояние без создания или уничтожения ресурса
Очистите ресурсы
Если вам больше не нужны ресурсы, созданные через 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