Skip to content

T1Cloud/terraform-provider-t1cloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Terraform Provider T1 Cloud

Terraform — программное обеспечение с открытым исходным кодом, используемое для управления внешними ресурсами (например, в рамках модели инфраструктура как код). Создано и поддерживается компанией HashiCorp. Пользователи определяют инфраструктуру с помощью декларативного языка конфигурации, известного как HashiCorp Configuration Language (HCL).

Terraform провайдер позволяет управлять множеством ресурсов в T1 Cloud. Пользователи могут взаимодействовать с T1 Cloud, объявляя ресурсы(resources) или вызывая источники данных(data sources).

Требования

Ресурсы и источники данных

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

Установка из зеркала

Чтобы установить провайдер из зеркала:

  1. В любом удобном месте создайте директорию, в которой будет находиться описание вашей инфраструктуры.
  2. Создать в директории файл main.tf с минимальным содержанием:
terraform {
  required_providers {
    t1 = {
      source  = "tf-registry.t1.cloud/terraform-provider/t1cloud"
    }
  }
  required_version = ">= 0.13"
}
  1. Выполните команду terraform init. В случае успешной инициализации провайдера появится сообщение:
Terraform has been successfully initialized!

Установка из репозитория

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

Чтобы установить провайдер из репозитория:

  1. Загрузите исполняемый файл провайдера terraform-provider-t1 для вашей платформы.
  2. Создайте директорию
    • Для Windows: %appdata%\terraform.d\plugins\t1\t1-cloud\t1\${VERSION}\windows_amd64.
    • Для Linux: ~/.terraform.d/plugins/t1/t1-cloud/t1/${VERSION}/linux_amd64.
  3. Переместите в данную директорию исполняемый файл terraform-provider-t1.
  4. В любом удобном месте создайте директорию, в которой будет находиться описание вашей инфраструктуры.
  5. Создайте в директории файл main.tf с минимальным содержанием:
terraform {
  required_providers {
    t1 = {
      source  = "t1/t1-cloud/t1"
    }
  }
  required_version = ">= 0.13"
}
  1. Выполните terraform init. В случае успешной инициализации провайдера появится сообщение:
Terraform has been successfully initialized!

Авторизация

Для дальнейшей работы с порталом T1 Cloud:

  1. Создайте сервисный аккаунт в рамках вашего проекта.
  2. Сгенерируйте новый 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:

  1. Создайте файл main.tf.
  2. Заполните файл в соответствии с примером конфигурации инфраструктуры.
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
}
  1. Чтобы проверить корректность синтаксиса файла конфигурации инфраструктуры, выполните команду:
terraform validate
  1. Чтобы посмотреть составленную конфигурацию инфраструктуры до её применения, выполните команду:
terraform plan
  1. Чтобы развернуть сервер из составленной конфигурации инфраструктуры, выполните команду:
terraform apply
  1. Прежде чем 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:
  1. Напечатайте yes и нажмите Enter.

В результате Terraform покажет сообщение:

Apply complete!

Проверьте, что сервер появился в проекте вашего аккаунта на портале T1 Cloud.

FAQ

MS Windows не видит Terraform

Перенесите файл Terraform.exe в системную папку System32. В большинстве случаев папка находится по адресу C:\Windows\System32.

Провайдер не инициализируется

Убедитесь, что папка с файлом main.tf не находится под контролем Git и других систем контроля версий.

About

Terraform T1Cloud Provider

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors