Terraform позволяет автоматизированно управлять множеством ресурсов в Timeweb Cloud с помощью файлов удобных файлов конфигурации формата HCL (HashiCorp Configuration Language) и детальных планов вносимых изменений.
Подробную информацию о ресурсах провайдера можно получить в документации на сайте Terraform.
Подробная документация по параметрам ресурсов и источников данных провайдера
-
Ресурсы
- twc_server - сервер;
- twc_server_ip - дополнительный IP адрес для сервера;
- twc_server_disk - дополнительный диск для сервера;
- twc_server_disk_backup - резервная копия основного и дополнительного диска сервера;
- twc_server_disk_backup_schedule - настройки автоматически создаваемых резервных копий основного и дополнительного диска сервера;
- twc_project - проекты;
- twc_s3_bucket - хранилище S3;
- twc_s3_bucket_directory - директории S3-хранилища;
- twc_s3_bucket_file - файлы S3-хранилища;
- twc_s3_bucket_subdomain - поддомены для S3-хранилища;
- twc_database_cluster - кластер управляемой СУБД;
- twc_database_instance - БД в управляемом кластере СУБД;
- twc_database_user - пользователь в управляемом кластере СУБД;
- twc_database_backup - бекапы управляемых СУБД;
- twc_database_backup_schedule - настройка автоматически создаваемых бекапов СУБД;
- twc_dns_rr - ресурсные записи DNS;
- twc_k8s_cluster - управляемый кластер K8S;
- twc_k8s_node_group - группы узлов кластера K8S;
- twc_firewall - управляемый Firewall;
- twc_firewall_rule - правила управляемого Firewall;
- twc_vpc - управляемый VPC;
- twc_floating_ip - плавающий IP-адрес;
-
Источники данных
- twc_configurator - конфигураторы для ручного выбора требуемых ресурсов VDS;
- twc_os - ОС для установки на сервер;
- twc_presets - пресеты конфигураций сервера;
- twc_projects - проекты аккаунта;
- twc_software - ПО для установки на сервер;
- twc_ssh_keys - SSH-ключи для установки на сервер;
- twc_s3_bucket - S3 хранилища;
- twc_s3_preset - пресеты конфигураций S3 хранилища;
- twc_database_preset - пресеты конфигураций баз данных;
- twc_database_cluster - управляемые кластера СУБД;
- twc_dns_zone - зоны DNS;
- twc_k8s_preset - пресеты конфигураций K8S кластера;
- twc_image - образы для серверов;
- twc_floating_ip - плавающий IP-адрес;
Вы можете установить Terraform согласно официальной инструкции
-
Создайте новую директорию с произвольным названием, к примеру:
timeweb-cloud-terraform
; -
В созданной директории добавьте конфигурационный файл с расширением
.tf
, например:main.tf
.
-
В начале конфигурационного файла
main.tf
добавьте следующий блок:terraform { required_providers { twc = { source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud" } } required_version = ">= 0.13" }
Провайдер поддерживает только версии Terraform 0.13 и выше, на версиях ниже работа провайдера не поддерживается
-
Выполните
terraform init
для скачивания провайдера
Для работы с провайдером Terraform требуется получения токена API в соответствующем разделе Панели управления для доступа к ресурсам аккаунта.
После создания токена им можно воспользоваться одним из указанных способов:
Добавьте созданный токен в переменные окружения для его использования в Terraform:
export TWC_TOKEN=eyJhbGc...
или
Добавьте созданный токен в качестве параметра провайдера:
provider "twc" {
token = "eyJhbGci..."
}
Для корректной работы Terraform-провайдера у токена должно быть отключено подтверждение удаления серверов через Telegram
При помощи Terraform в Timeweb Cloud можно управлять различными типами типы ресурсов. Подробная информация о каждом ресурсе и источнике данных находится в отдельных разделах данной документации
В качестве примера будет применена конфигурация ниже, в рамках которой будет создана виртуальная машина с именем Example server
c NVMe диском на 10 Гб, 1 ядром CPU и 1 Гб RAM с установленной ОС Ubuntu 22.04
в локации ru-1
.
terraform {
required_providers {
twc = {
source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud"
}
}
required_version = ">= 0.13"
}
data "twc_configurator" "configurator" {
location = "ru-1"
disk_type = "nvme"
}
data "twc_os" "os" {
name = "ubuntu"
version = "22.04"
}
resource "twc_server" "example-server" {
name = "Example server"
os_id = data.twc_os.os.id
configuration {
configurator_id = data.twc_configurator.configurator.id
disk = 1024 * 10
cpu = 1
ram = 1024
}
}
Для работы данного примера требуется установленная переменная окружения TWC_TOKEN
Для доступа у созданной VDS потребуется пароль, который после создания сервера будет отправлен на почту. Как альтернативный вариант можно использовать доступ по SSH, подробнее о котором можно узнать в документации по ресурсу twc_server
и источнику данных twc_ssh_keys
.
Проверка конфигурации выполняется конфигурацию командой:
terraform validate
Если конфигурация является допустимой, появится сообщение:
Success! The configuration is valid.
Другие команды
terraform
можно узнать из официальной документации Terraform
-
Для составления плана применения конфигурации выполните команду:
terraform plan
В терминале будет выведен список планируемых изменений. На этом этапе конфигурация применена не будет
-
Чтобы применить конфигурацию и создать ресурсы выполните команду:
terraform apply
-
Подтверждение создания ресурсов
Перед применением конфигурации Terraform повторно выведет план вносимых изменений и запросит ручное подтверждение перед началом своей работы:
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value:
введите в терминал слово yes
и нажмите Enter.
После применения конфигурации Terraform выведет результат применения конфигурации, который можно проверить в Панели управления
Чтобы удалить все ресурсы, созданные через Terraform:
-
Выполните команду;
terraform destroy
Во время выполнения будет выведен план удаления всех созданных ресурсов и Terraform запросит ручное подтверждение перед началом своей работы:
Do you really want to destroy all resources? Terraform will destroy all your managed infrastructure, as shown above. There is no undo. Only 'yes' will be accepted to confirm. Enter a value:
-
Введите слово
yes
и нажмите Enter
Модули от сторонних разработчиков.
- terraform-timeweb-cloud-server — модуль для создания облачных серверов [Terraform Registry↗].
- terraform-timeweb-cloud-firewall — модуль для создания FireWall [Terraform Registry↗].
- terraform-twc-db-cluster — модуль для создания баз данных.