Terraform — программное обеспечение с открытым исходным кодом, используемое для управления внешними ресурсами (например, в рамках модели инфраструктура как код). Создано и поддерживается компанией HashiCorp. Пользователи определяют инфраструктуру с помощью декларативного языка конфигурации, известного как HashiCorp Configuration Language (HCL).
Terraform провайдер позволяет управлять множеством ресурсов в T1 Cloud. Пользователи могут взаимодействовать с T1 Cloud, объявляя ресурсы(resources) или вызывая источники данных(data sources).
- Terraform Core >= 1.6.5
- Ресурсы:
- compute_backup_container - Бэкап-контейнер
- compute_backup_object - Дополнительные резеврные копии
- compute_instance - Серверы
- compute_volume - Диски
- compute_volume_attach - Подключение диска к серверу
- compute_snapshot - Снимки
- compute_image - Образы
- compute_ssh_key - SSH-ключи
- compute_floating_ip_associate - Подключение публичного IP к серверу
- vpc_network - Сети
- vpc_subnet - Подсети
- vpc_snat_router - Маршрутизаторы
- vpc_public_ip - Публичные IP-адреса
- vpc_vip - Виртуальные IP адреса
- vpc_security_group - Группы безопаcности
- vpc_security_group_rule - Правила группы безопаcности
- s3_bucket - Создание/удаление бакета
- s3_bucket_acl - Управление листом ACL для бакета
- s3_bucket_cors_configuration - Управления CORS для бакета
- s3_bucket_lifecycle_configuration - Управление жизненным циклом у бакета
- s3_bucket_object - Загрузка файла в бакет
- s3_bucket_versioning - Управление версионированием бакета
- s3_bucket_website_configuration - Управление режимом веб-сайт для бакета
- Источники данных:
- compute_flavor - Флейворы
- compute_image - Образы
- compute_volume - Диски
- compute_snapshot - Снимки
- compute_ssh_key - SSH-ключи
- vpc_network - Сети
- vpc_subnet - Подсети
- vpc_security_group - Группы безопасности
- s3_bucket - Бакет
- s3_bucket_object - Файл в бакете
- s3_bucket_objects - Файлы бакета
- canonical_user_id - Пользователь
Чтобы установить провайдер из зеркала:
- В любом удобном месте создайте директорию, в которой будет находиться описание вашей инфраструктуры.
- Создать в директории файл
main.tfс минимальным содержанием:
terraform {
required_providers {
t1 = {
source = "tf-registry.t1.cloud/terraform-provider/t1cloud"
}
}
required_version = ">= 0.13"
}- Выполните команду
terraform init. В случае успешной инициализации провайдера появится сообщение:
Terraform has been successfully initialized!
Если установка провайдера из зеркала вам не подходит, например, нет доступа из-за ограничений в вашем регионе или организации, вы можете установить провайдер вручную из репозитория.
Чтобы установить провайдер из репозитория:
- Загрузите исполняемый файл провайдера
terraform-provider-t1для вашей платформы. - Создайте директорию
- Для Windows:
%appdata%\terraform.d\plugins\t1\t1-cloud\t1\${VERSION}\windows_amd64. - Для Linux:
~/.terraform.d/plugins/t1/t1-cloud/t1/${VERSION}/linux_amd64.
- Для Windows:
- Переместите в данную директорию исполняемый файл
terraform-provider-t1. - В любом удобном месте создайте директорию, в которой будет находиться описание вашей инфраструктуры.
- Создайте в директории файл
main.tfс минимальным содержанием:
terraform {
required_providers {
t1 = {
source = "t1/t1-cloud/t1"
}
}
required_version = ">= 0.13"
}- Выполните
terraform init. В случае успешной инициализации провайдера появится сообщение:
Terraform has been successfully initialized!
Для дальнейшей работы с порталом T1 Cloud:
- Создайте сервисный аккаунт в рамках вашего проекта.
- Сгенерируйте новый API-ключ. Реквизиты созданного API-ключа используются для первоначальной авторизации провайдера:
provider "t1" {
client_id = "Идентификатор ключа"
client_secret = "Сам ключ"
project_name = "Идентификатор вашего проекта"
}В качестве примера создадим сервер c конфигурацией:
- системный диск — 10 Gb;
- количество виртуальных ядер процессора — 1 vCPU;
- количество оперативной памяти — 1 Gb;
- серия процессора — Intel Cascade Lake 2.2 GHz;
- установленная ОС — Astra Linux 1.7.3.
Чтобы создать сервер с помощью Terraform:
- Создайте файл main.tf.
- Заполните файл в соответствии с примером конфигурации инфраструктуры.
resource "t1_compute_ssh_key" "test" {
name = "test-ssh"
login = "root"
public_keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCD+ACR4ubu98ti0aJOxL/Nwn6dlV++PCDY4HrkgScacPxIVbgo82P/qJ/VJEc29AbKYLGDsJ1NoK8xp320UCv1FCDHzZMKEeUQU8lfTvpN2hvTQlYp42ooGSsJgp4AM4wVYs8UBfbOerXquV/rQ6t7QiECJXq5e3gNu9C7hioOmw== "
]
}
data "t1_compute_flavor" "small" {
vcpus = 1
ram = 1
family = "general-purpose"
cpu_series = "Intel Cascade Lake 2.2 GHz"
hardware_group = "public"
}
data "t1_compute_image" "astra" {
os_distro = "astra"
os_version = "1.7.3 Орёл"
}
data "t1_vpc_network" "default" {
name = "default"
}
resource "t1_compute_instance" "vm" {
# По умолчанию сервер после создания включен.
# Если нужно, чтобы после создания сервер был выключен, используйте state = "off".
state = "off"
# Если установить true, то при удалении сервера автоматически удалятся все подключенные к нему диски.
allow_delete_volumes = "false"
system_volume = {
size = 10
}
flavor = data.t1_compute_flavor.small
image = data.t1_compute_image.astra
ssh_keys = [
t1_compute_ssh_key.test.id,
]
network_interface = {
subnet_id = data.t1_vpc_network.default.subnets[0].id
}
}
# Подключение к серверу публичного IP-адреса, если он нужен.
resource "t1_vpc_public_ip" "foo" {
region = "ru-central1"
}
resource "t1_compute_floating_ip_associate" "associate" {
instance_id = t1_compute_instance.vm.id
floating_ip = t1_vpc_public_ip.foo.floating_ip
}- Чтобы проверить корректность синтаксиса файла конфигурации инфраструктуры, выполните команду:
terraform validate
- Чтобы посмотреть составленную конфигурацию инфраструктуры до её применения, выполните команду:
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 покажет сообщение:
Apply complete!
Проверьте, что сервер появился в проекте вашего аккаунта на портале T1 Cloud.
Перенесите файл Terraform.exe в системную папку System32. В большинстве случаев папка находится по адресу C:\Windows\System32.
Убедитесь, что папка с файлом main.tf не находится под контролем Git и других систем контроля версий.