https://github.com/timeweb-cloud/terraform-provider-timeweb-cloud
Timeweb Cloud Terraform Provider
https://github.com/timeweb-cloud/terraform-provider-timeweb-cloud
Last synced: 5 months ago
JSON representation
Timeweb Cloud Terraform Provider
- Host: GitHub
- URL: https://github.com/timeweb-cloud/terraform-provider-timeweb-cloud
- Owner: timeweb-cloud
- Created: 2023-03-09T13:10:12.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-12-23T14:59:49.000Z (6 months ago)
- Last Synced: 2025-12-25T04:44:47.583Z (6 months ago)
- Size: 93.8 KB
- Stars: 73
- Watchers: 6
- Forks: 4
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Timeweb Cloud | Terraform Provider Docs
Terraform позволяет автоматизированно управлять множеством ресурсов в Timeweb Cloud с помощью файлов удобных файлов конфигурации формата HCL (HashiCorp Configuration Language) и детальных планов вносимых изменений.
Подробную информацию о ресурсах провайдера можно получить в документации на [сайте Terraform](https://developer.hashicorp.com/terraform/docs).
## Документация
Подробная документация по параметрам ресурсов и источников данных провайдера
* Ресурсы
* [twc_network_drive](docs/resources/network_drive.md) - сетевые диски;
* [twc_server](docs/resources/server.md) - сервер;
* [twc_server_ip](docs/resources/server_ip.md) - дополнительный IP адрес для сервера;
* [twc_server_disk](docs/resources/server_disk.md) - дополнительный диск для сервера;
* [twc_server_disk_backup](docs/resources/server_disk_backup.md) - резервная копия основного и дополнительного диска сервера;
* [twc_server_disk_backup_schedule](docs/resources/server_disk_backup_schedule.md) - настройки автоматически создаваемых резервных копий основного и дополнительного диска сервера;
* [twc_project](docs/resources/project.md) - проекты;
* [twc_s3_bucket](docs/resources/s3_bucket.md) - хранилище S3;
* [twc_s3_bucket_directory](docs/resources/s3_bucket_directory.md) - директории S3-хранилища;
* [twc_s3_bucket_file](docs/resources/s3_bucket_file.md) - файлы S3-хранилища;
* [twc_s3_bucket_subdomain](docs/resources/s3_bucket_subdomain.md) - поддомены для S3-хранилища;
* [twc_database_cluster](docs/resources/database_cluster.md) - кластер управляемой СУБД;
* [twc_database_instance](docs/resources/database_instance.md) - БД в управляемом кластере СУБД;
* [twc_database_user](docs/resources/database_user.md) - пользователь в управляемом кластере СУБД;
* [twc_database_backup](docs/resources/database_backup.md) - бекапы управляемых СУБД;
* [twc_database_backup_schedule](docs/resources/database_backup_schedule.md) - настройка автоматически создаваемых бекапов СУБД;
* [twc_dns_rr](docs/resources/dns_rr.md) - ресурсные записи DNS;
* [twc_k8s_cluster](docs/resources/k8s_cluster.md) - управляемый кластер K8S;
* [twc_k8s_node_group](docs/resources/k8s_node_group.md) - группы узлов кластера K8S;
* [twc_firewall](docs/resources/firewall.md) - управляемый Firewall;
* [twc_firewall_rule](docs/resources/firewall_rule.md) - правила управляемого Firewall;
* [twc_vpc](docs/resources/vpc.md) - управляемый VPC;
* [twc_floating_ip](docs/resources/floating_ip.md) - плавающий IP-адрес;
* Источники данных
* [twc_network_drive_preset](docs/data-sources/network_drive_preset.md) - пресеты сетевых дисков;
* [twc_network_drive](docs/data-sources/network_drive.md) - сетевые диски аккаунта;
* [twc_configurator](docs/data-sources/configurator.md) - конфигураторы для ручного выбора требуемых ресурсов VDS;
* [twc_os](docs/data-sources/os.md) - ОС для установки на сервер;
* [twc_presets](docs/data-sources/presets.md) - пресеты конфигураций сервера;
* [twc_projects](docs/data-sources/projects.md) - проекты аккаунта;
* [twc_software](docs/data-sources/software.md) - ПО для установки на сервер;
* [twc_ssh_keys](docs/data-sources/ssh_keys.md) - SSH-ключи для установки на сервер;
* [twc_s3_bucket](docs/data-sources/s3_bucket.md) - S3 хранилища;
* [twc_s3_preset](docs/data-sources/s3_preset.md) - пресеты конфигураций S3 хранилища;
* [twc_database_preset](docs/data-sources/database_preset.md) - пресеты конфигураций баз данных;
* [twc_database_cluster](docs/data-sources/database_cluster.md) - управляемые кластера СУБД;
* [twc_dns_zone](docs/data-sources/dns_zone.md) - зоны DNS;
* [twc_k8s_preset](docs/data-sources/k8s_preset.md) - пресеты конфигураций K8S кластера;
* [twc_image](docs/data-sources/image.md) - образы для серверов;
* [twc_floating_ip](docs/data-sources/floating_ip.md) - плавающий IP-адрес;
## Быстрый старт
### Установите Terraform
Вы можете установить Terraform согласно [официальной инструкции](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli?in=terraform%2Faws-get-started)
### Создание конфигурации Terraform
1. Создайте новую директорию с произвольным названием, к примеру: `timeweb-cloud-terraform`;
2. В созданной директории добавьте конфигурационный файл с расширением `.tf`, например: `main.tf`.
### Добавление провайдера
1. В начале конфигурационного файла `main.tf` добавьте следующий блок:
```
terraform {
required_providers {
twc = {
source = "tf.timeweb.cloud/timeweb-cloud/timeweb-cloud"
}
}
required_version = ">= 0.13"
}
```
> Провайдер поддерживает только версии Terraform 0.13 и выше, на версиях ниже работа провайдера не поддерживается
2. Выполните `terraform init` для скачивания провайдера
### Установка API-токена для работы с провайдером
Для работы с провайдером Terraform требуется получения токена API в [соответствующем разделе Панели управления](https://timeweb.cloud/my/api-keys) для доступа к ресурсам аккаунта.
После создания токена им можно воспользоваться одним из указанных способов:
Добавьте созданный токен в переменные окружения для его использования в Terraform:
```sh
export TWC_TOKEN=eyJhbGc...
```
или
Добавьте созданный токен в качестве параметра провайдера:
```terraform
provider "twc" {
token = "eyJhbGci..."
}
```
> Для корректной работы Terraform-провайдера у токена должно быть отключено подтверждение удаления серверов через Telegram
### Подготовка конфигурации
При помощи Terraform в Timeweb Cloud можно управлять различными типами типы ресурсов. Подробная информация о каждом ресурсе и источнике данных находится в отдельных разделах данной документации
В качестве примера будет применена конфигурация ниже, в рамках которой будет создана виртуальная машина с именем `Example server` c NVMe диском на 10 Гб, 1 ядром CPU и 1 Гб RAM с установленной ОС `Ubuntu 22.04` в локации `ru-1`.
```terraform
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 * 15
cpu = 1
ram = 1024
}
}
```
> Для работы данного примера требуется установленная переменная окружения TWC_TOKEN
Для доступа у созданной VDS потребуется пароль, который после создания сервера будет отправлен на почту. Как альтернативный вариант можно использовать доступ по SSH, подробнее о котором можно узнать в документации по ресурсу `twc_server` и источнику данных `twc_ssh_keys`.
### Проверка файлов конфигурации
Проверка конфигурации выполняется конфигурацию командой:
```sh
terraform validate
```
Если конфигурация является допустимой, появится сообщение:
```
Success! The configuration is valid.
```
> Другие команды `terraform` можно узнать из [официальной документации Terraform](https://developer.hashicorp.com/terraform/cli)
### Применение файлов конфигурации
1. Для составления плана применения конфигурации выполните команду:
```sh
terraform plan
```
В терминале будет выведен список планируемых изменений. На этом этапе конфигурация применена не будет
2. Чтобы применить конфигурацию и создать ресурсы выполните команду:
```sh
terraform apply
```
3. Подтверждение создания ресурсов
Перед применением конфигурации Terraform повторно выведет план вносимых изменений и запросит ручное подтверждение перед началом своей работы:
```sh
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 выведет результат применения конфигурации, который можно проверить в [Панели управления](https://timeweb.cloud/my)
### Удаление созданных ресурсов
Чтобы удалить все ресурсы, созданные через Terraform:
1. Выполните команду;
```sh
terraform destroy
```
Во время выполнения будет выведен план удаления всех созданных ресурсов и Terraform запросит ручное подтверждение перед началом своей работы:
```sh
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:
```
2. Введите слово `yes` и нажмите *Enter*
## Модули от сообщества
Модули от сторонних разработчиков.
- [terraform-timeweb-cloud-server](https://github.com/deff-dev/terraform-timeweb-cloud-server) — модуль для создания облачных серверов [[Terraform Registry](https://registry.terraform.io/modules/deff-dev/cloud-server/timeweb/latest)↗].
- [terraform-timeweb-cloud-firewall](https://github.com/deff-dev/terraform-timeweb-cloud-firewall) — модуль для создания FireWall [[Terraform Registry](https://registry.terraform.io/modules/deff-dev/cloud-firewall/timeweb/latest)↗].
- [terraform-twc-db-cluster](https://gitlab.com/denismaster/terraform-twc-db-cluster) — модуль для создания баз данных.