Top.Mail.Ru

Облако

Управление ресурсами с помощью Terraform

Terraform — это инструмент с открытым исходным кодом, разработанный HashiCorp. Он позволяет задавать правила настройки ваших ресурсов и описывать инфраструктуру через набор конфигурационных файлов на языке HCL с расширением .tf. Terraform считывает такие файлы и приводит ресурсы к описанному состоянию через вызовы к API вашей системы.

С помощью нашего провайдера вы можете управлять ресурсами продуктов Облако, CDN, DNS и Хранилище. Подробные инструкции по работе с нашим провайдером, примеры конфигурационных файлов и актуальную версию провайдера можно найти в репозитории Hashicorp.

Обратите внимание. Репозиторий Hashicorp недоступен для пользователей РФ, поэтому рекомендуем воспользоваться нашим зеркалом.

Исходный код нашего провайдера, инструкции об использовании Terraform, а также примеры конфигураций даны в репозитории GitHub.

Ниже мы рассказываем как установить Terraform на разные операционные системы и создать первые конфигурационные файлы. 

На момент написания инструкции, версия нашего Terraform-провайдера — v0.7.6. Чтобы узнать актуальную версию, перейдите в репозиторий Hashicorp.

В этой инструкции мы будем использовать дистрибутив 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 нового хранилища:

Управление ресурсами с помощью Terraform

В этой инструкции мы будем использовать Windows 10.

1. Cкачайте Terraform на сайте Hashicorp или воспользуйтесь нашим зеркалом и скачайте дистрибутив для вашей системы.

2. Разархивируйте ZIP-файл в новой папке, например, C:\terraform.

3. Чтобы ваша командная строка могла работать с Terraform, его необходимо добавить в переменную окружения PATH.

4. Для этого найдите на рабочем столе иконку Этот компьютер, нажмите на неё правой кнопкой мыши и выберите Свойства.

5. Откроется окно Параметры, в правой части которого вы найдёте колонку Сопутствующие параметры. В ней выберите пункт Дополнительные параметры системы.

6. Откроется окно Свойства системы, нажмите на Переменные среды.

Управление ресурсами с помощью Terraform

7. В блоке Переменные среды пользователя откройте PATH и вставьте путь C:\terraform или другую папку, которую вы задали на шаге №2. Нажмите ОК.

Управление ресурсами с помощью Terraform

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 отправил нам такой ответ, указав названия новых зон:

Управление ресурсами с помощью Terraform

Чтобы установить 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 нового диска:

Управление ресурсами с помощью Terraform

1. Чтобы удалить ресурсы, созданные с помощью Terraform, перейдите в папку с конфигурационными файлами, ресурсы которых нужно удалить, и выполните команду:

terraform destroy

Терминал выведет список всех удаляемых ресурсов.

2. Чтобы подтвердить удаление, введите слово yes и нажмите Enter.

Управление ресурсами с помощью Terraform

Если вы хотите хранить несколько конфигурационных файлов в одной папке, вам необходимо добавить один файл, который содержит данные о провайдере, например:

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" }

Мы используем cookie, чтобы сайт стал лучше для вас.