Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация

Начало работы с Terraform

Terraform — очень удобный инструмент для быстрого создания облачной инфраструктуры и управления ей при помощи конфигурационных файлов. Когда конфигурационные файлы изменяются, Terraform автоматически реагирует на это и отдает соответствующие команды на добавление или удаление нужных администратору ресурсов. В статье мы расскажем, как при помощи Terraform (также будем использовать сокращение TF) создать виртуальную инфраструктуру в Timeweb Cloud.

Подробная документация по работе с Terraform доступна в нашем профиле GitHub.

Шаг 1. Устанавливаем Terraform

Terraform можно установить на Linux, macOS и Windows. Установка возможна двумя способами:

  • через пакетный менеджер;
  • вручную — загрузкой и распаковкой готового бинарного файла.

Рассмотрим второй способ — установку вручную, с использованием предварительно собранного бинарного файла.

HashiCorp, разработчик Terraform, ограничил доступ к своим репозиториям с IP-адресов из России. Для вашего удобства мы развернули зеркало: http://terraform-mirror.timeweb.cloud/index.html. Далее для установки клиента Terraform мы будем использовать именно это зеркало.

Актуальную версию Terraform можно посмотреть на странице http://terraform-mirror.timeweb.cloud/current/index.html.

Для примера рассмотрим установку версии 1.14.0.

Скачайте архив с бинарным файлом:

    
wget http://terraform-mirror.timeweb.cloud/1.14.0/terraform_1.14.0_linux_amd64.zip

Распакуйте архив:

    
unzip ./terraform_1.14.0_linux_amd64.zip

Переместите файл в директорию /usr/local/bin:

    
sudo mv ./terraform /usr/local/bin

Убедитесь, что Terraform установлен:

    
terraform -v

Шаг 2. Создаем конфигурационный файл .tf

Файлы конфигураций в Terraform имеют расширение .tf. При этом их название может быть произвольным — программа всё равно сможет извлечь из них нужную информацию. Теперь давайте создадим новый каталог (назовем его timeweb_project), а затем добавим туда файл конфигураций, к примеру, twcproject.tf. Чтобы получить файл с таким расширением, можно сначала создать обычный текстовый файл, а затем изменить его расширение на .tf.

Отметим, что в одном каталоге может быть несколько конфигурационных файлов, связанных с одним проектом. Например, можно создать файл vars.tf для описания переменных, nginx.tf для настройки веб-сервера Nginx и так далее. В дальнейшем при выполнении команды terraform plan все .tf-файлы будут «склеены» в один. 

Однако в рамках данной статьи мы будем использовать один общий конфигурационный файл twcproject.tf.

Шаг 3. Настраиваем провайдера

Настройка провайдера через конфигурационный файл выполняется следующим образом. В начало нашего файла twcproject.tf добавляем следующие строки:

    
terraform {   required_providers {     twc = {       source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud"     }   }   required_version = ">= 1.4.4" }

В source указывается адрес провайдера (в примере указан адрес Timeweb Cloud), а номер версии Terraform вы можете узнать при скачивании (мы указали самую свежую на момент написания инструкции). Также учитывайте, что провайдер поддерживает только версии Terraform 0.13 и выше.

Теперь введите в папке с конфигурационным файлом следующую команду, которая установит провайдера:

    
terraform init

Можно приступать к следующему шагу. Если же у вас возникла проблема с установкой провайдера, вы всегда можете обратиться к специалистам нашей службы поддержки прямо в чате.

Шаг 4. Создаем и указываем токен

Чтобы появилась возможность работать с установленным провайдером, нам понадобится API-токен, который можно получить в разделе «API и Terraform» панели Timeweb Cloud (вы должны быть залогинены, чтобы попасть в этот раздел).

Допустим мы получили токен fb246030216d5g30b1g6228e3071037g (это значение здесь только в качестве примера, вам необходимо будет вводить свой токен, который будет сгенерирован для вас). Добавляем его в файл twcproject.tf следующим образом:

    
provider "twc" {   token = "fb246030216d5g30b1g6228e3071037g" }

Если нужна возможность удаления сервисов, необходимо отключить Telegram-подтверждения их удаления, отметив соответсвующий чекбокс в настройках токена:

8a2b7af7 A5c2 4b7f B41b 657b869f4e74

Шаг 5. Готовим конфигурацию

С помощью Terraform вы сможете управлять разнообразными типами ресурсов в своем облаке Timeweb Cloud. Рассмотрим пример создания виртуальной машины (далее ВМ) с диском SSD емкостью 100 ГБ, 2 ядрами и 4 ГБ оперативной памяти, в качестве операционной системы будем использовать Ubuntu 20.04, а наш сервер назовем, допустим, my-timeweb-server (вы можете заменить на свое имя). Для этого в конфигурационном файле twcproject.tf прописываем следующее:

    
terraform {   required_providers {     twc = {       source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud"     }   }   required_version = ">= 1.4.4" } provider "twc" {   token = "fb246030216d5g30b1g6228e3071037g" } data "twc_configurator" "configurator" {   location = "ru-1"  preset_type = "premium" } data "twc_os" "os" {   name = "ubuntu" version = "20.04" } resource "twc_server" "my-timeweb-server" {   name = "My Timeweb Server"   os_id = data.twc_os.os.id   configuration {     configurator_id = data.twc_configurator.configurator.id     disk = 102400     cpu = 2     ram = 1024 * 4   } }

Также для дальнейшей работы вам понадобится пароль, он будет выслан вам на электронную почту сразу после создания ресурса.

Важно: если ВМ не создалась, проверьте, корректно ли указан токен (см. Шаг 4). Также стоит обратить внимание на ошибку, которую вывел Terraform: зачастую из нее понятна причина, по которой ВМ не создалась.

Кроме того, можно настроить доступ через SSH-ключи. Если вы не знаете, как генерировать SSH-ключи, воспользуйтесь этой инструкцией. Для загрузки SSH-ключа добавьте следующий блок в конфигурационный файл twcproject.tf:

    
resource "twc_ssh_key" "your-key" {   name = "Your key"   body = file("~/.ssh/your-key.pub") }

А в этом блоке resource пропишите строку ssh_keys_ids:

    
resource "twc_server" "my-timeweb-server" {  name = "My Timeweb Server"   os_id = data.twc_os.os.id  ssh_keys_ids = [twc_ssh_key.your-key.id] }

Обратите внимание, что указывать нужно только публичный ключ SSH.

В итоге у нас получится следующий файл конфигурации:

    
terraform {   required_providers {     twc = {       source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud"     }   }   required_version = ">= 1.4.4" } provider "twc" {   token = "fb246030216d5g30b1g6228e3071037g" } data "twc_configurator" "configurator" {   location = "ru-1"  preset_type = "premium" } data "twc_os" "os" {   name = "ubuntu"   version = "20.04" } resource "twc_ssh_key" "your-key" {   name = "Your key"   body = file("~/.ssh/your-key.pub") } resource "twc_server" "my-timeweb-server" {   name = "My Timeweb Server"   os_id = data.twc_os.os.id   ssh_keys_ids = [twc_ssh_key.your-key.id]   configuration {     configurator_id = data.twc_configurator.configurator.id     disk = 102400     cpu = 2     ram = 1024 * 4   } }

На этом подготовка завершена, осталось выполнить пару простейших шагов.

Шаг 6. Проверяем конфигурацию

Это делает команда:

    
terraform validate

При правильных настройках вы получите сообщение о том, что конфигурация корректна (valid). Если возникла ошибка, проверьте настройки еще раз. Теперь осталось применить конфигурацию.

Шаг 7. Применяем конфигурацию

Сначала вводим следующую инструкцию:

    
terraform plan

Она не применяет изменения, а только выводит список ресурсов для проверки настроек. При обнаружении ошибок Terraform не просто выдаст дежурное сообщение, но и укажет, где эти ошибки допущены. Если же всё в порядке, вводим:

    
terraform apply

Эта инструкция применяет созданные конфигурации, так что ваши ресурсы готовы, и с ними уже можно будет работать. Но для применения изменений их сначала нужно будет подтвердить, поэтому в строке:

    
Enter a value:

вводим yes и нажимаем Enter.

Теперь можно проверить созданные ресурсы через панель управления. Если же по каким-то причинам вы решите удалить их, это можно сделать при помощи инструкции:

    
terraform destroy

Операцию также нужно будет подтвердить, введя yes и нажав на клавишу Enter, чтобы подтвердить удаление.

Заключение

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

Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев