Облако
Управление ресурсами с помощью Terraform
Что такое Terraform?
Terraform — это инструмент с открытым исходным кодом, разработанный HashiCorp. Он позволяет задавать правила настройки ваших ресурсов и описывать инфраструктуру через набор конфигурационных файлов на языке HCL с расширением .tf. Terraform считывает такие файлы и приводит ресурсы к описанному состоянию через вызовы к API вашей системы.
Как использовать Terraform EdgeЦентр?
С помощью нашего провайдера вы можете управлять ресурсами продуктов Облако, CDN, DNS и Хранилище. Подробные инструкции по работе с нашим провайдером, примеры конфигурационных файлов и актуальную версию провайдера можно найти в репозитории Hashicorp.
Обратите внимание. Репозиторий Hashicorp недоступен для пользователей РФ, поэтому рекомендуем воспользоваться нашим зеркалом.
Исходный код нашего провайдера, инструкции об использовании Terraform, а также примеры конфигураций даны в репозитории GitHub.
Как установить Terraform?
Ниже мы рассказываем как установить Terraform на разные операционные системы и создать первые конфигурационные файлы.
На момент написания инструкции, версия нашего Terraform-провайдера — v0.7.6. Чтобы узнать актуальную версию, перейдите в репозиторий Hashicorp.
Linux
В этой инструкции мы будем использовать дистрибутив Ubuntu 22.04.
Чтобы легко и быстро установить Terraform, мы воспользуемся встроенной на всех дистрибутивах Linux утилитой snapd. Она позволяет безопасно распространять новые приложения и управлять пакетами.
1. Откройте терминал и установите Terraform с помощью snap:
sudo snap install terraform --classic
2. Убедитесь, что установка прошла успешно:
terraform -version
В ответе должна появиться версия Terraform.
3. Перейдите в домашнюю директорию и создайте конфигурационный файл для настройки провайдера:
nano ~/.terraformrc
4. В открывшемся редакторе добавьте следующий блок:
provider_installation {
network_mirror {
url = "https://tf-registry.edgecenter.ru/"
include = ["registry.terraform.io/*/*"]
}
direct {
exclude = ["registry.terraform.io/*/*"]
}
}
Здесь мы использовали зеркало, чтобы взаимодействовать с Terraform.
5. Сохраните и закройте файл.
6. Создайте папку, в которой будут храниться файлы конфигурации, и перейдите в неё:
mkdir terraform
cd terraform
Где terraform — любое название папки.
7. Получите перманентный API-токен в вашем личном кабинете EdgeЦентр согласно инструкции. Он понадобится на следующем шаге.
8. Чтобы пользоваться провайдером EdgeЦентр, создайте конфигурационный файл с данными Terraform:
nano config.tf
Где config — любое название файла.
9. В открывшемся редакторе добавьте следующий блок:
terraform {
required_version = ">= 0.13.0"
required_providers {
edgecenter = {
source = "Edge-Center/edgecenter"
version = "0.7.6"
}
}
}
provider "edgecenter" {
permanent_api_token = "7024$e8a827404e3e64d8a67c717a9564e4db10e8b"
}
Где значение строки permanent_api_token — API-токен, который вы получили на шаге выше.
10. Сохраните и закройте файл.
11. Не выходя из директории terraform, выполните команду ниже, чтобы инициализировать провайдера, указанного в шаге выше. Это позволит вам работать с ресурсами и источниками данных провайдера.
terraform init
Дождитесь сообщения об успешной инициализации.
Важно. Если вы планируете работать с несколькими проектами, мы рекомендуем создавать конфигурационные файлы в разных директориях.
12. В качестве примера создадим папку storage, где будем хранить конфигурационный файл для ресурсов Хранилища.
Обратите внимание. Все последующие папки для работы с Terraform должны храниться в главной папке, вместе с файлом конфигурации провайдера.
mkdir storage
13. Создайте файл конфигурации:
nano storage.tf
Где storage — любое название файла.
14. В открывшемся редакторе добавьте следующий блок:
terraform {
required_version = ">= 0.13.0"
required_providers {
edgecenter = {
source = "Edge-Center/edgecenter"
version = "0.7.6"
}
}
}
provider "edgecenter" {
permanent_api_token = "7024$e8a827404e3e64d8a67c717a9564e4db10e8b"
}
resource "edgecenter_storage_s3" "example_s3" {
name = "terraformstorage"
location = "s-dt2"
}
Мы взяли пример создания нового хранилища из нашей документации.
15. Сохраните и закройте файл.
16. Произведите инициализацию:
terraform init
17. Проверьте корректность конфигурации командой:
terraform validate
Если Terraform принимает вашу конфигурацию, вы увидите сообщение:
«Success! The configuration is valid».
18. Отформатируйте файл конфигурации:
terraform fmt
19. Чтобы проверить конфигурацию, выполните команду:
terraform plan
Терминал покажет вам список изменяемых и создаваемых ресурсов и их параметры. На этом этапе Terraform не создаёт ресурсы, а если в конфигурации есть ошибки, он на них укажет.
20. Чтобы запустить изменение или создание ресурсов, выполните команду:
terraform apply
21. Подтвердите действие: введите в терминал слово yes и нажмите Enter.
Terraform отправил нам такой ответ, указав ID нового хранилища:
Windows
В этой инструкции мы будем использовать Windows 10.
1. Cкачайте Terraform на сайте Hashicorp или воспользуйтесь нашим зеркалом и скачайте дистрибутив для вашей системы.
2. Разархивируйте ZIP-файл в новой папке, например, C:\terraform.
3. Чтобы ваша командная строка могла работать с Terraform, его необходимо добавить в переменную окружения PATH.
4. Для этого найдите на рабочем столе иконку Этот компьютер, нажмите на неё правой кнопкой мыши и выберите Свойства.
5. Откроется окно Параметры, в правой части которого вы найдёте колонку Сопутствующие параметры. В ней выберите пункт Дополнительные параметры системы.
6. Откроется окно Свойства системы, нажмите на Переменные среды.
7. В блоке Переменные среды пользователя откройте PATH и вставьте путь C:\terraform или другую папку, которую вы задали на шаге №2. Нажмите ОК.
8. Откройте командную строку и убедитесь, что Terraform работает:
terraform -help
Если всё успешно, вы увидите, команды, поддерживаемые Terraform.
9. Найдите путь до источника, из которого будет устанавливаться провайдер:
echo %APPDATA%
10. Создайте файл для запуска конфигурации Terraform и откройте его:
type nul > terraform.rc
notepad terraform.rc
11. В открывшемся редакторе добавьте следующий блок:
provider_installation {
network_mirror {
url = "https://tf-registry.edgecenter.ru/"
include = ["registry.terraform.io/*/*"]
}
direct {
exclude = ["registry.terraform.io/*/*"]
}
}
Здесь мы использовали зеркало, чтобы взаимодействовать с Terraform.
12. Сохраните изменения и закройте файл.
13. Перейдите в созданную папку для Terraform:
cd /terraform
14. Создайте папку, в которой будет храниться конфигурация провайдера, и перейдите в неё:
md config
cd config
Где config — любое название вашей папки.
15. Получите перманентный API-токен в вашем личном кабинете EdgeЦентр согласно инструкции. Он понадобится на следующем шаге.
16. Создайте файл для конфигурации провайдераи откройте его:
type nul > config.tf
notepad config.tf
Где config — любое название вашего файла.
17. В открывшемся редакторе добавьте следующий блок:
terraform {
required_version = ">= 0.13.0"
required_providers {
edgecenter = {
source = "Edge-Center/edgecenter"
version = "0.7.6"
}
}
}
provider "edgecenter" {
permanent_api_token = "7024$e8a827404e3e64d8a67c717a9564e4db10e8b"
}
Где значение строки permanent_api_token — API-токен, который вы получили на шаге выше.
18. Сохраните изменения и закройте файл.
19. Не выходя из папки config, выполните команду ниже, чтобы инициализировать провайдера, указанного в шаге выше. Это позволит вам работать с ресурсами и источниками данных провайдера.
terraform init
Дождитесь сообщения об успешной инициализации.
Важно. Если вы планируете работать с несколькими проектами, мы рекомендуем создавать конфигурационные файлы в разных папках.
20. В качестве примера создадим папку dns, где будем хранить конфигурационный файл для ресурсов DNS.
Обратите внимание. Все последующие папки для работы с Terraform должны храниться в главной папке, вместе с файлом конфигурации провайдера.
md dns
21. Создайте файл для конфигурации и откройте его:
type nul > dns.tf
notepad dns.tf
Где dns — любое название вашего файла.
22. В открывшемся редакторе добавьте следующий блок:
terraform {
required_version = ">= 0.13.0"
required_providers {
edgecenter = {
source = "Edge-Center/edgecenter"
version = "0.7.6"
}
}
}
provider "edgecenter" {
permanent_api_token = "7024$e8a827404e3e64d8a67c717a9564e4db10e8b"
}
resource "edgecenter_dns_zone" "example_zone_1" {
name = "myexampledns.com"
}
resource "edgecenter_dns_zone" "example_zone_2" {
name = "abcdefgh.com"
}
Мы взяли пример создания новых DNS-зон из нашей документации.
23. Сохраните и закройте файл.
24. Произведите инициализацию:
terraform init
25. Проверьте корректность конфигурации командой:
terraform validate
Если Terraform принимает вашу конфигурацию, вы увидите сообщение:
«Success! The configuration is valid».
26. Отформатируйте файл конфигурации:
terraform fmt
27. Чтобы проверить конфигурацию, выполните команду:
terraform plan
Терминал покажет вам список изменяемых и создаваемых ресурсов и их параметры. На этом этапе Terraform не создаёт ресурсы, а если в конфигурации есть ошибки, он на них укажет.
28. Чтобы запустить изменение или создание ресурсов, выполните команду:
terraform apply
29. Подтвердите действие: введите в терминал слово yes и нажмите Enter.
Terraform отправил нам такой ответ, указав названия новых зон:
macOS
Чтобы установить Terraform, мы воспользуемся утилитой Homebrew, которая позволяет устанавливать пакеты и приложения.
1. Откройте терминал и введите команду для установки Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Нажмите Enter, чтобы подтвердить действие и дождитесь установки пакетов.
2. Чтобы добавить Homebrew в ваш PATH и начать его использовать:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
3. Установите Terraform:
brew install terraform
4. Убедитесь, что Terraform работает:
terraform -help
Если всё успешно, вы увидите, команды, поддерживаемые Terraform.
5. Перейдите в домашнюю директорию и создайте конфигурационный файл для настройки провайдера:
nano ~/.terraformrc
6. В открывшемся редакторе добавьте следующий блок:
provider_installation {
network_mirror {
url = "https://tf-registry.edgecenter.ru/"
include = ["registry.terraform.io/*/*"]
}
direct {
exclude = ["registry.terraform.io/*/*"]
}
}
Здесь мы использовали зеркало, чтобы взаимодействовать с Terraform.
7. Сохраните и закройте файл.
8. Создайте папку, в которой будут храниться файлы конфигурации, и перейдите в неё:
mkdir terraform
cd terraform
Где terraform — любое название папки.
9. Получите перманентный API-токен в вашем личном кабинете EdgeЦентр согласно инструкции. Он понадобится на следующем шаге.
10. Чтобы пользоваться провайдером EdgeЦентр, создайте конфигурационный файл с данными Terraform:
nano config.tf
Где config — любое название файла.
11. В открывшемся редакторе добавьте следующий блок:
terraform {
required_version = ">= 0.13.0"
required_providers {
edgecenter = {
source = "Edge-Center/edgecenter"
version = "0.7.6"
}
}
}
provider "edgecenter" {
permanent_api_token = "7024$e8a827404e3e64d8a67c717a9564e4db10e8b"
}
Где значение строки permanent_api_token — API-токен, который вы получили на шаге выше.
12. Сохраните и закройте файл.
13. Не выходя из директории terraform, выполните команду ниже, чтобы инициализировать провайдера, указанного в шаге выше. Это позволит вам работать с ресурсами и источниками данных провайдера.
terraform init
Дождитесь сообщения об успешной инициализации.
Важно. Если вы планируете работать с несколькими проектами, мы рекомендуем создавать конфигурационные файлы в разных директориях.
14. В качестве примера создадим папку cloud, где будем хранить конфигурационный файл для ресурсов Облака.
Обратите внимание. Все последующие папки для работы с Terraform должны храниться в главной папке, вместе с файлом конфигурации провайдера.
mkdir cloud
15. Создайте файл конфигурации:
nano cloud.tf
Где cloud — любое название файла.
16. В открывшемся редакторе добавьте следующий блок:
terraform {
required_version = ">= 0.13.0"
required_providers {
edgecenter = {
source = "Edge-Center/edgecenter"
version = "0.7.6"
}
}
}
provider "edgecenter" {
permanent_api_token = "7024$e8a827404e3e64d8a67c717a9564e4db10e8b"
}
resource "edgecenter_volume" "volume" {
name = "volume_example"
type_name = "standard"
size = 1
region_id = 22
project_id = 284245
metadata_map = {
tag1 = "tag1_value"
}
}
Мы взяли пример создания нового диска из нашей документации.
17. Сохраните и закройте файл.
18. Произведите инициализацию:
terraform init
19. Проверьте корректность конфигурации командой:
terraform validate
Если Terraform принимает вашу конфигурацию, вы увидите сообщение:
«Success! The configuration is valid».
20. Отформатируйте файл конфигурации:
terraform fmt
21. Чтобы проверить конфигурацию, выполните команду:
terraform plan
Терминал покажет вам список изменяемых и создаваемых ресурсов и их параметры. На этом этапе Terraform не создаёт ресурсы, а если в конфигурации есть ошибки, он на них укажет.
22. Чтобы запустить изменение или создание ресурсов, выполните команду:
terraform apply
23. Подтвердите действие: введите в терминал слово yes и нажмите Enter.
Terraform отправил нам такой ответ, указав ID нового диска:
Как удалить ресурсы?
1. Чтобы удалить ресурсы, созданные с помощью Terraform, перейдите в папку с конфигурационными файлами, ресурсы которых нужно удалить, и выполните команду:
terraform destroy
Терминал выведет список всех удаляемых ресурсов.
2. Чтобы подтвердить удаление, введите слово yes и нажмите Enter.
Как добавить несколько конфигураций в одну папку?
Если вы хотите хранить несколько конфигурационных файлов в одной папке, вам необходимо добавить один файл, который содержит данные о провайдере, например:
terraform {
required_version = ">= 0.13.0"
required_providers {
edgecenter = {
source = "Edge-Center/edgecenter"
version = "0.7.6"
}
}
}
provider "edgecenter" {
permanent_api_token = "7024$e8a827404e3e64d8a67c717a9564e4db10e8b"
}
Во все остальные файлы достаточно будет добавить только информацию о создаваемых или изменяемых ресурсах, например:
resource "edgecenter_dns_zone" "example_zone_1" {
name = "myexampledns.com"
}
resource "edgecenter_dns_zone" "example_zone_2" {
name = "abcdefgh.com"
}