Начало работы с Terraform
Подробная документация по работе с Terraform доступна в нашем профиле GitHub.
Terraform — очень удобный инструмент для быстрого создания облачной инфраструктуры и управления ей при помощи конфигурационных файлов. Когда конфигурационные файлы изменяются, Terraform автоматически реагирует на это и отдает соответствующие команды на добавление или удаление нужных администратору ресурсов. В статье мы расскажем, как при помощи Terraform (также будем использовать сокращение TF) создать виртуальную инфраструктуру в Timeweb Cloud.
Шаг 1. Устанавливаем Terraform
Расскажем, как установить TF на Linux и Windows.
Установка Terraform в Linux на примере Ubuntu
Сначала через sudo обновляем список пакетов:
apt update
Затем ставим нужные пакеты и переходим в папку, куда мы хотим установить TF, и загружаем нужную версию пакета:
apt install wget unzip
cd ~
wget https://releases.hashicorp.com/terraform/x.x.x/terraform_x.x.x_linux_amd64.zip
В последней инструкции замените x.x.x
на номер актуальной версии TF. Посмотреть актуальную версию можно здесь. Теперь распаковываем архив и перемещаем его в директорию:
unzip terraform_x.x.x_linux_amd64.zip
mv terraform /usr/local/bin/
Вот и всё, осталось проверить, что TF установлен и доступен:
terraform -v
Установка Terraform в Windows
Здесь проще всего воспользоваться менеджером Chocolatey, который можно скачать отсюда. Для установки Choco откройте Powershell от имени администратора и запустите следующую команду:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
После установки Chocolatey откройте командную строку (это можно сделать в меню «Пуск», но обязательно от имени администратора) и введите:
choco install terraform
Проверка установки выполняется аналогичной инструкцией:
terraform -v
Вот и всё. Добавим, что скачать последнюю версию Terraform вы можете с сайта разработчика, а более подробная инструкция по установке Terraform в Linux и Windows приведена здесь. Также для управления облачной инфраструктуры Timeweb Cloud через Terraform вам может понадобиться утилита командной строки. Для этого у нас есть Timeweb Cloud CLI, с документацией которой можно ознакомиться здесь. А мы приступаем к настройкам.
Шаг 2. Создаем конфигурационный файл .tf
Файлы конфигураций в Terraform имеют расширение .tf
. При этом их название может быть произвольным — программа всё равно сможет извлечь из них нужную информацию. Теперь давайте создадим новый каталог (назовем его timeweb_project
), а затем добавим туда файл конфигураций, к примеру, twcproject.tf
. Чтобы получить файл с таким расширением, можно сначала создать обычный текстовый файл, а затем изменить его расширение на .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
(это значение здесь только в качестве примера, вам необходимо будет вводить свой токен, который будет сгенерирован для вас). Добавляем его через провайдера:
provider "twc" {
token = "fb246030216d5g30b1g6228e3071037g"
}
Теперь можно начать готовить конфигурацию. В случае, если нужна возможность удаления серверов, необходимо отключить подтверждение их удаления через Telegram. Как это сделать, описано в специальной статье.
Шаг 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"
}
data "twc_configurator" "configurator" {
location = "ru-1"
disk_type = "nvme"
}
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
}
}
Также для дальнейшей работы вам понадобится пароль, он будет выслан вам на электронную почту сразу после создания ресурса.
Важно: если ВМ не создалась, проверьте, установлен ли у вас TWC_TOKEN
по инструкции выше. Также стоит обратить внимание на ошибку, которую вывел Terraform: зачастую из нее понятна причина, по которой ВМ не создалась. Кроме того, можно настроить доступ через SSH-ключи. Если вы не знаете, как генерировать SSH-ключи, воспользуйтесь этой инструкцией. Для загрузки SSH ключа добавьте следующий блок в конфигурационный файл twcproject.tf
:
data "twc_ssh_keys" "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. На этом подготовка завершена, осталось выполнить пару простейших шагов.
Шаг 6. Проверяем конфигурацию
Это делает команда:
terraform validate
При правильных настройках вы получите сообщение о том, что конфигурация корректна (valid). Если возникла ошибка, проверьте настройки еще раз. Теперь осталось применить конфигурацию.
Шаг 7. Применяем конфигурацию
Сначала вводим следующую инструкцию:
terraform plan
Она не применяет изменения, а только выводит список ресурсов для проверки настроек. При обнаружении ошибок Terraform не просто выдаст дежурное сообщение, но и укажет, где эти ошибки допущены. Если же всё в порядке, вводим:
terraform apply
Эта инструкция применяет созданные конфигурации, так что ваши ресурсы готовы, и с ними уже можно будет работать. Но для применения изменений их сначала нужно будет подтвердить, поэтому в строке:
Enter a value:
вводим yes и нажимаем Enter.
Теперь можно проверить созданные ресурсы через панель управления. Если же по каким-то причинам вы решите удалить их, это можно сделать при помощи инструкции:
terraform destroy
Операцию также нужно будет подтвердить, введя yes и нажав на клавишу Enter, чтобы подтвердить удаление.
Заключение
Итак, мы научились создавать конфигурационные файлы Terraform, настраивать провайдера, а также добавлять ресурсы и настраивать их конфигурацию, чтобы можно было работать с ними на своем сервере Timeweb Cloud. Если же вы хотите узнать об инструкциях Terraform больше, ознакомиться с ними можно в официальной документации.