08. Подключение Terraform к VCD
Что такое Terraform?
Terraform — программное обеспечение с открытым исходным кодом, используемое для управления внешними ресурсами, например, в модели инфраструктуры как кода. Виртуальный дата-центр (VDC) — пул выделенных облачных ресурсов для создания ИТ - инфраструктуры корпоративного уровня. Ресурсы VDC включают в себя процессоры, оперативную память, дисковое пространство и сети, на основе которых создаются виртуальные машины (ВМ).
Подготовка конфигурационного файла
1. Создайте конфигурационный файл main.tfи файл с переменными variables.tf.
2. Перейдите по ссылкам ниже и скопируйте поддерживаемый provider в файл конфигурации main.tf.
3. Инициализируйте Terraform в папке с конфигурационным файлом main.tf.
4. Для обновления версии провайдера измените версию в файле main.tf и введите команду terraform init -upgrade.
5. Проверьте версию Terraform и установленного провайдера при помощи команды terraform -version.
Подключение к Cloud Director
1. Заполните файл main.tf данными:
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.
default = "my-terraform"
description = "Cloud Director tenant user"
}
- Используется пароль для авторизации в Cloud Director.
default = "my-password"
description = " Cloud Director tenant password"
}
- Используется название Tenant Cloud Director.
default = "DataFort "
description = "Name tenant"
}
- Используется название Virtual Data Center.
default = "MY-VDC "
description = "Name Virtual Data Center"
}
- Используется ссылка на подключение.
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:
required_providers {
vcd = {
source = "vmware/vcd"
version = "3.7.0"
}
}
}
2. Подключитесь к Tenant:
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:
name = "my-first-vapp"
vdc = var.vcd_vdc
org = var.vcd_org
}
4. Подключитесь в ручную созданную сеть network к vApp my-first-vapp:
vapp_name = "my-first-vapp"
vdc = var.vcd_vdc
org_network_name = "network"
depends_on = [vcd_vapp.vapp1]
}
5. Создайте ВМ из шаблона в vApp my-first-vapp и включите ее кастомизацию ВМ с подключением сети network:
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:
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"
}