Да, вы когда-либо создавали виртуальную машину Azure через портал Azure? Если да, сколько кликов вам потребовалось для этого? Возможно, вы не сможете повторить этот процесс снова и снова, используя точно такие же входные значения, чтобы соответствовать определенному стандарту. Вам нужно автоматизировать этот процесс. Создавайте виртуальные машины Azure с помощью Terraform!
Terraform от HashiCorp – это утилита, которая создает простую или сложную инфраструктуру как на месте, так и в облаке. Terraform – это один исполняемый файл, который считывает файлы конфигурации, создает состояние, а затем гарантирует, что ваша инфраструктура создается и остается в этом состоянии.
В этой статье вы узнаете, как начать работу с Terraform, создав виртуальную машину Azure. Этот учебник станет отличным примером использования Terraform в Azure.
Предварительные требования
Если вы хотите следовать этому учебнику, убедитесь, что у вас есть следующее:
На протяжении шагов этого учебника будет использоваться macOS с запущенным PowerShell Core, хотя этот же процесс можно выполнить в Windows 10 с использованием PowerShell Core, Windows PowerShell или даже командной строки Windows.
Установка Terraform
Для начала вам нужно скачать Terraform. Есть много способов сделать это, в зависимости от ваших предпочтений. В этом руководстве используется macOS, поэтому вы можете использовать HomeBrew, запустив brew install terraform
. Вы также можете перейти непосредственно на страницу загрузки Terraform, или, если вы используете Windows, вы также можете воспользоваться Chocolatey.
Знали ли вы, что в Azure Cloud Shell Terraform установлен заранее?
После загрузки Terraform скопируйте его в папку в вашем пути и запустите terraform
. Вы должны увидеть инструкции по использованию, как показано ниже. Если вы видите это, значит, вы готовы продолжить.

Аутентификация в Azure
Terraform использует поставщиков для взаимодействия с различными поставщиками облачных и локальных ресурсов. В этом случае вам необходимо настроить поставщика Azure для Terraform. Предполагается, что у вас уже установлен Azure CLI и вы уже аутентифицировались в Azure. Сначала вам нужно создать сервисный принципал. Terraform будет использовать сервисный принципал для аутентификации и получения доступа к вашей подписке Azure.
Создание сервисного принципала
В вашей консоли создайте сервисный принципал с помощью Azure CLI. Для этого:
Сначала найдите свой идентификатор подписки, используя команду az account list
ниже.
После того как вы найдете идентификатор подписки, создайте служебного принципала, используя роль Contributor, ограниченную вашей подпиской.
Azure CLI свяжется с Azure и создаст приложение Azure AD с паролем, как показано ниже. Поскольку вы присваиваете вывод, показанный ниже, переменной $sp
вы будете иметь appId
и password
, сохраненные в переменной для последующего использования.

Установите переменные среды
Terraform должен знать четыре различных элемента конфигурации, чтобы успешно подключиться к Azure.
- Идентификатор подписки Azure
- Идентификатор приложения Azure AD служебного принципала
- Пароль служебного принципала
- Тенант Azure AD
Один из способов предоставить эту информацию Terraform — использовать переменные среды. Поскольку этот учебник работает в консоли PowerShell, вы можете установить эти переменные среды, используя $env:
. Ниже вы увидите каждую из переменных среды, которые Terraform будет искать при попытке подключения к Azure.
Поскольку вывод команды az ad sp create-for-rbac
был сохранен в переменную $sp
ранее, вы можете просто ссылаться на свойства, а не копировать и вставлять их.
После того как вы определили переменные среды, Terraform готов к подключению к Azure!
Создайте файл конфигурации
Все конфигурации Terraform создаются в одной папке обычно с именем модуля. В этом руководстве вы не создаете модуль, но будете следовать той же практике.
В консоли PowerShell создайте папку с именем TerraformTesting где угодно, а затем перейдите в эту папку.
Затем создайте файл конфигурации main.tf. Здесь будет храниться конфигурация для создания виртуальной машины Azure с помощью Terraform. Этот файл конфигурации обычно называют “основным” файлом конфигурации. Он содержит объявления провайдера и ресурсов для всей инфраструктуры, которую конфигурация будет управлять.
Если вы хотите узнать больше о синтаксисе (HCL), Майкл Леван и я написали отличную главу о Terraform в нашей книге No BS Azure and DevOps eBook.
Создайте новый файл main.tf внутри папки Terraformtesting, который будет выглядеть следующим образом.
Инициализация Terraform
Terraform должен знать, какие провайдеры вы будете использовать, когда он попытается создать ресурсы. Он должен знать это заранее, потому что он загружает эти провайдеры в ту же папку, в которой вы работаете.
Загрузите провайдер ресурсов azurerm
, определенный в основном конфигурационном файле, выполнив команду terraform init
. После этого вы должны увидеть вывод, аналогичный приведенному ниже.

Проверьте конфигурацию
Конфигурация, которую вы создали, может быть не идеальной. Знаю, трудно поверить, верно? Terraform должен проверить конфигурацию на наличие синтаксических ошибок. Для этого выполните команду terraform plan
. Эта команда считывает файлы конфигурации в каталоге и сообщает об ошибках.
Обязательно устраните все ошибки, которые выявит
terraform plan
, прежде чем пытаться создавать инфраструктуру!
Создайте виртуальную машину Azure с помощью Terraform
Наконец, пришло время построить виртуальную машину Azure, выполнив terraform apply
. Когда вы выполняете terraform apply
, Terraform считывает файлы конфигурации в каталоге и запрашивает подтверждение. После ввода “yes” он связывается с Azure и начинает создавать виртуальную машину и все связанные ресурсы.

Если внизу вы видите яркий и блестящий зеленый текст Apply complete!
, то Terraform успешно создал ресурсы!
Очистка
Поскольку это была всего лишь демонстрация, и вы, вероятно, не планируете оставлять эту виртуальную машину, обязательно удалите все, что вы сделали.
Вы создали служебного представителя для Terraform для аутентификации в Azure. Вы можете удалить его с помощью команды az ad sp delete
ниже.
Затем удалите виртуальную машину Azure, которую вы только что создали, и все другие ресурсы в файле конфигурации с помощью terraform destroy
. Если вы хотите проверить конфигурацию и протестировать, что произошло бы, если бы вы выполнили terraform destroy
, вы также можете выполнить terraform plan -destroy
.
Заключение
Terraform – отличный и бесплатный инструмент для создания инфраструктуры во многих различных областях. Изучение синтаксиса HCL является самой сложной частью Terraform, но честно говоря, HCL – интуитивно понятный язык. Если вы думаете о использовании инструмента, подобного Terraform или шаблонов ARM, например, изучите Terraform!
Terraform сейчас популярен в индустрии и имеет отличную поддержку сообщества, а также много людей, готовых помочь!