Terraform шаблоны для создания сервера в VMware Cloud Director

Общая информация
Эти шаблоны можно использовать для создания ресурсов с помощью Terraform. 
- Подробная документация: [Terraform Docs](https://www.terraform.io/docs/index.html)
- Инструкция по установке и началу работы доступна по [ссылке](https://www.ps.kz/faq/oblachnaya-platforma-ps-cloud/vpc/terraform-getting-started)

1. Создание сервера с диском и новой серой маршрутизируемой подсетью из образа
```hcl
terraform {
  required_version = ">= 0.13"
  required_providers {
    vcd = {
      source = "vmware/vcd"
    }
  }
}

provider "vcd" {
  user     = "vcd_user"
  password = "vcd_pass"
  org      = "org_name"
  vdc      = "vdc_name"
  url      = "https://vcloud.pscloud.io/api"
}

data "vcd_catalog" "catalog" {
  org  = "org_name"
  name = "catalog_name"
}

data "vcd_catalog_media" "image" {
  org        = "org_name"
  catalog_id = data.vcd_catalog.catalog.id
  name       = "exist_image_name"
}

resource "vcd_independent_disk" "disk" {
  vdc             = "vdc_name"
  name            = "volume_test"
  size_in_mb      = 10000
  storage_profile = "storage_policies_name"
}

resource "vcd_network_routed" "net" {
  org          = "org_name"
  vdc          = "vdc_name"
  name         = "new_subnet_name"
  edge_gateway = "edge_gateway_name"
  gateway      = "192.168.1.1"

  static_ip_pool {
    start_address = "192.168.1.2"
    end_address   = "192.168.1.100"
  }
}

resource "vcd_vm" "test_vm" {
  name             = "test_vm"
  computer_name    = "test-vm"
  os_type          = "centos7_64Guest"
  hardware_version = "vmx-14"
  boot_image_id    = data.vcd_catalog_media.image.id
  cpus             = 1
  memory           = 1024

  disk {
    name        = vcd_independent_disk.disk.name
    bus_number  = 1
    unit_number = 0
  }

  guest_properties = {
    "hostname"   = "test-vm"
    "password"   = "your_password_here"
    "user-data"  = base64encode(file("cloud-config.yaml"))
  }

  network {
    name               = vcd_network_routed.net.name
    type               = "none"
    ip_allocation_mode = "MANUAL"
    ip                 = "192.168.1.10"
  }
}
```

2. Создание сервера (fast provisioning) с существующей подсетью из темплейта
```hcl
terraform {
  required_version = ">= 0.13"
  required_providers {
    vcd = {
      source = "vmware/vcd"
    }
  }
}

provider "vcd" {
  user     = "vcd_user"
  password = "vcd_pass"
  org      = "org_name"
  vdc      = "vdc_name"
  url      = "https://vcloud.pscloud.io/api"
}

data "vcd_catalog" "catalog" {
  org  = "org_name"
  name = "catalog_name"
}

data "vcd_catalog_vapp_template" "vapp" {
  org        = "org_name"
  catalog_id = data.vcd_catalog.catalog.id
  name       = "exist_template_name"
}

resource "vcd_vm" "test" {
  name             = "test_vm"
  vapp_template_id = data.vcd_catalog_vapp_template.vapp.id
  cpus             = 1
  memory           = 1024

  network {
    name               = "exist_subnet_name"
    type               = "org"
    ip_allocation_mode = "MANUAL"
    ip                 = "192.168.0.10"
  }
}
```

3. Создание vApp с сервером и новой изолированной подсетью из темплейта
```hcl
terraform {
  required_version = ">= 0.13"
  required_providers {
    vcd = {
      source = "vmware/vcd"
    }
  }
}

provider "vcd" {
  user     = "vcd_user"
  password = "vcd_pass"
  org      = "org_name"
  vdc      = "vdc_name"
  url      = "https://vcloud.pscloud.io/api"
}

data "vcd_catalog" "catalog" {
  org  = "org_name"
  name = "catalog_name"
}

data "vcd_catalog_vapp_template" "vapp" {
  org        = "org_name"
  catalog_id = data.vcd_catalog.catalog.id
  name       = "exist_template_name"
}

resource "vcd_vapp" "test" {
  name = "test"
}

resource "vcd_vapp_network" "vapp_net" {
  name         = "test_net"
  vapp_name    = vcd_vapp.test.name
  gateway      = "192.168.1.1"
  prefix_length = 24

  static_ip_pool {
    start_address = "192.168.1.2"
    end_address   = "192.168.1.100"
  }
}

resource "vcd_vapp_vm" "test" {
  vapp_name        = vcd_vapp.test.name
  name             = "test_vm"
  vapp_template_id = data.vcd_catalog_vapp_template.vapp.id
  cpus             = 1
  memory           = 1024

  network {
    name               = vcd_vapp_network.vapp_net.name
    type               = "vapp"
    ip_allocation_mode = "MANUAL"
    ip                 = "192.168.1.10"
  }
}
```

4. Создание vApp с сервером, диском и новой маршрутизируемой подсетью из образа
```hcl
terraform {
  required_version = ">= 0.13"
  required_providers {
    vcd = {
      source = "vmware/vcd"
    }
  }
}

provider "vcd" {
  user     = "vcd_user"
  password = "vcd_pass"
  org      = "org_name"
  vdc      = "vdc_name"
  url      = "https://vcloud.pscloud.io/api"
}

data "vcd_catalog" "catalog" {
  org  = "org_name"
  name = "catalog_name"
}

data "vcd_catalog_media" "image" {
  org        = "org_name"
  catalog_id = data.vcd_catalog.catalog.id
  name       = "exist_image_name"
}

resource "vcd_independent_disk" "disk" {
  vdc             = "vdc_name"
  name            = "volume_test"
  size_in_mb      = 10000
  storage_profile = "storage_policies_name"
}

resource "vcd_network_routed" "net" {
  org          = "org_name"
  vdc          = "vdc_name"
  name         = "new_subnet_name"
  edge_gateway = "edge_gateway_name"
  gateway      = "192.168.1.1"

  static_ip_pool {
    start_address = "192.168.1.2"
    end_address   = "192.168.1.100"
  }
}

resource "vcd_vapp" "test" {
  depends_on = [vcd_network_routed.net]
  name       = "test"
  power_on   = true
}

resource "vcd_vapp_org_network" "routed-network" {
  depends_on       = [vcd_vapp.test]
  vdc              = "vdc_name"
  vapp_name        = vcd_vapp.test.name
  org_network_name = vcd_network_routed.net.name
}

resource "vcd_vapp_vm" "test" {
  vapp_name        = vcd_vapp.test.name
  name             = "test_vm"
  computer_name    = "test"
  os_type          = "centos7_64Guest"
  hardware_version = "vmx-14"
  boot_image_id    = data.vcd_catalog_media.image.id
  cpus             = 1
  memory           = 1024

  disk {
    name        = vcd_independent_disk.disk.name
    bus_number  = 1
    unit_number = 0
  }

  network {
    name               = vcd_network_routed.net.name
    type               = "org"
    ip_allocation_mode = "MANUAL"
    ip                 = "192.168.1.10"
  }
}

question
Не нашли подходящего ответа?
Напишите запрос в службу поддержки
Написать сейчас