08. Подключение Terraform к VCD

Редактировал(а) Ирина Сафонова 18.03.2024, 22:31

Что такое Terraform?


Terraform — программное обеспечение с открытым исходным кодом, используемое для управления внешними ресурсами, например, в модели инфраструктуры как кода. Виртуальный дата-центр (VDC) — пул выделенных облачных ресурсов для создания ИТ - инфраструктуры корпоративного уровня. Ресурсы VDC включают в себя процессоры, оперативную память, дисковое пространство и сети, на основе которых создаются виртуальные машины (ВМ).

Подготовка конфигурационного файла


1. Создайте конфигурационный файл main.tfи файл с переменными variables.tf.
2. Перейдите по ссылкам ниже и скопируйте поддерживаемый provider в файл конфигурации main.tf.

Для Cloud Director 10.2 максимально поддерживаемая версия провайдера 3.7.0, для Cloud Director 10.3 максимальная поддерживаемая версия 3.9.0.

Рисунок1.png

3. Инициализируйте Terraform в папке с конфигурационным файлом main.tf.

Команда terraform init используется для инициализации рабочего каталога Terraform. При введении команды она автоматически загрузит и установит все необходимые провайдеры и плагины Terraform. 

Рисунок2.png

4. Для обновления версии провайдера измените версию в файле main.tf и введите команду terraform init -upgrade.

Рисунок3.png

5. Проверьте версию Terraform и установленного провайдера при помощи команды terraform -version.

Рисунок5.png

Подключение к Cloud Director


1. Заполните файл main.tf данными:

provider "vcd" {
  user                 = var.vcd_user
  password             = var.vcd_pass
  auth_type            = "integrated"
  org                  = var.vcd_org
  url                  = var.vcd_url
  max_retry_timeout    = var.vcd_max_retry_timeout
  allow_unverified_ssl = var.vcd_allow_unverified_ssl
}

2. Заполните variables.tf данными:

  • Используется логин для авторизации в Cloud Director.
variable "vcd_user" {
  default     = "my-terraform"
  description = "Cloud Director tenant user"
}
  • Используется пароль для авторизации в Cloud Director.
variable "vcd_pass" {
  default     = "my-password"
  description = " Cloud Director tenant password"
}
  • Используется название Tenant Cloud Director.
variable "vcd_org" {
  default     = "DataFort "
  description = "Name tenant"
}
  • Используется название Virtual Data Center.
variable "vcd_vdc" {
  default     = "MY-VDC "
  description = "Name Virtual Data Center"
}
  • Используется ссылка на подключение.
variable "vcd_url" {
  default     = " https://cloud3.datafort.ru/api"
  description = "Cloud Director URL API"
}
variable "vcd_max_retry_timeout" {
  default     = "60"
}
variable "vcd_allow_unverified_ssl" {
  default     = "true"
  description = "Disable SSL certificate"
}

Основные команды

КомандаКомментарий
terraform -helpВывод справок.
terraform -versionВывод версии Terraform и установленных провайдеров.
terraform initИнициализация каталога Terraform.
terraform planГенерация файла изменений и вывод изменений в инфраструктуре.
terraform applyПрименение изменений конфигурации, изначально выводит список изменений и/или добавлений в инфраструктуру.
terraform destroyУдаление инфраструктуры.
terraform refreshОбновление состояния с локальным файлом и состоянием реальных ресурсов.

Пример настройки


В примере создается vApp (виртуальное приложение), в которое помещается виртуальная машина (ВМ) и подключается к существующей сети. В файле main.tf:

1. Укажите провайдер поддерживаемой версии Cloud Director:

terraform {
  required_providers {
    vcd = {
      source = "vmware/vcd"
      version = "3.7.0"
    }
  }
}

2. Подключитесь к Tenant:

provider "vcd" {
  user                 = var.vcd_user
  password             = var.vcd_pass
  auth_type            = "integrated"
  org                  = var.vcd_org
  vdc                  = var.vcd_vdc
  url                  = var.vcd_url
  max_retry_timeout    = var.vcd_max_retry_timeout
  allow_unverified_ssl = var.vcd_allow_unverified_ssl
}

3. Создайте vApp:

resource "vcd_vapp" "vapp1" {
  name = "my-first-vapp"
  vdc  = var.vcd_vdc
  org  = var.vcd_org
}

4. Подключитесь в ручную созданную сеть network к vApp my-first-vapp:

resource "vcd_vapp_org_network" "is-net" {
  vapp_name        = "my-first-vapp"
  vdc              = var.vcd_vdc
  org_network_name = "network"
  depends_on       = [vcd_vapp.vapp1]
}

5. Создайте ВМ из шаблона в vApp my-first-vapp и включите ее кастомизацию ВМ с подключением сети network:

resource "vcd_vapp_vm" "vm1" {
  vapp_name     = vcd_vapp.vapp1.name
  name          = "my-first-vm"
  computer_name = "myvm"
  cpus            = 4
  cpu_cores       = 2
  memory          = 4096
  org             = var.vcd_org
  vdc             = var.vcd_vdc
  storage_profile = var.storage_br
  os_type         = "windows9Server64Guest"
  catalog_name    = var.catalog_name_templates
  template_name   = var.name_templates
  depends_on      = [vcd_vapp.vapp1, vcd_vapp_org_network.is-net]
  customization {
 enabled        = true
    force                      = true
    change_sid                 = true
    allow_local_admin_password = true
    auto_generate_password     = false
    admin_password             = "my-secure-password"
  }

  network {
    adapter_type       = "VMXNET3"
    connected          = true
    ip_allocation_mode = "POOL"
    is_primary         = true
    name               = "network"
    type               = "org"
  }
}

Файл variables.tf:

variable "vcd_user" {
 default = "my-terraform"
 description = "Cloud Director tenant user"
}
variable "vcd_pass" {
 default = "my-password"
 description = "Cloud Director tenant password"
}
variable "vcd_org" {
 default = "DataFort"
 description = "Tenant name"
}
variable "vcd_vdc" {
 default = "MY-VDC"
 description = "Name VDC"
}
variable "vcd_url" {
 default = "https://cloud3.datafort.ru/api"
 description = "URL Cloud Director API"
}
variable "vcd_max_retry_timeout" {
 default = "60"
}
variable "vcd_allow_unverified_ssl" {
 default = "true"
 description = "Disable SSL certificate"
}
variable "storage_br" {
 default = "HP3.1-VCD-Templates-Bronze-6"
}
variable "catalog_name_templates" {
  default     = "Windows"
  description = "Name catalog templates"
}
variable "name_templates" {
  default     = "Win2016_DE_RUS DC3 vCD_tmp"
  description = "Name templates"
}

Ссылки на документацию


В начало 🡱
К следующему разделу 🡲
К предыдущему разделу 🡰