Исходный код вики Подключение Terraform к vCD

Версия 48.1 от Ирина Сафонова на 10.07.2023, 23:17

Скрыть последних авторов
Ирина Сафонова 9.1 1 **Содержание**
Ирина Сафонова 8.1 2
Ирина Сафонова 7.1 3 {{toc/}}
Ирина Сафонова 1.1 4
Ирина Сафонова 46.1 5 == Подготовка конфигурационного файла ==
Ирина Сафонова 1.1 6
7 ----
8
Ирина Сафонова 45.1 9 ~1. Создайте конфигурационный файл {{code language="none"}}main.tf{{/code}}и файл с переменными {{code language="none"}}variables.tf{{/code}}.
Ирина Сафонова 16.1 10 2. Перейдите по ссылкам ниже и скопируйте поддерживаемый **provider** в файл конфигурации {{code language="none"}}main.tf{{/code}}.
Ирина Сафонова 1.1 11
12 {{info}}
13 Для Cloud Director 10.2 максимально поддерживаемая версия провайдера 3.7.0, для Cloud Director 10.3 максимальная поддерживаемая версия 3.9.0.
14 Провайдер 3.7.0 https://registry.terraform.io/providers/vmware/vcd/3.7.0/docs
15 Провайдер 3.9.0 https://registry.terraform.io/providers/vmware/vcd/latest/docs
16 {{/info}}
17
Ирина Сафонова 13.1 18 [[image:Рисунок1.png]]
Ирина Сафонова 11.2 19
Ирина Сафонова 15.1 20 3. Инициализируйте Terraform в папке с конфигурационным файлом {{code language="none"}}main.tf{{/code}}.
Ирина Сафонова 1.1 21
22 {{info}}
23 Команда {{code language="none"}}terraform init{{/code}} используется для инициализации рабочего каталога Terraform. При введении команды она автоматически загрузит и установит все необходимые провайдеры и плагины Terraform.
24 {{/info}}
25
Ирина Сафонова 13.1 26 [[image:Рисунок2.png]]
Ирина Сафонова 1.1 27
Ирина Сафонова 15.1 28 4. Для обновления версии провайдера измените версию в файле {{code language="none"}}main.tf{{/code}} и введите команду {{code language="none"}}terraform init -upgrade{{/code}}.
Ирина Сафонова 1.2 29
Ирина Сафонова 13.1 30 [[image:Рисунок3.png]]
Ирина Сафонова 1.3 31
Ирина Сафонова 11.5 32 5. Проверьте версию Terraform и установленного провайдера при помощи команды {{code language="none"}}terraform -version{{/code}}.
Ирина Сафонова 2.1 33
Ирина Сафонова 13.1 34 [[image:Рисунок5.png]]
Ирина Сафонова 11.5 35
Ирина Сафонова 2.1 36 == Подключение к Cloud Director ==
37
38 ----
39
40 ~1. Заполните файл {{code language="none"}}main.tf{{/code}} данными.
Ирина Сафонова 3.1 41
42 {{code language="none"}}
43 provider "vcd" {
Ирина Сафонова 2.1 44 user = var.vcd_user
45 password = var.vcd_pass
46 auth_type = "integrated"
47 org = var.vcd_org
48 url = var.vcd_url
49 max_retry_timeout = var.vcd_max_retry_timeout
50 allow_unverified_ssl = var.vcd_allow_unverified_ssl
51 }
Ирина Сафонова 3.1 52
Ирина Сафонова 2.1 53 {{/code}}
54
Ирина Сафонова 3.1 55 2. Заполните {{code language="none"}}variables.tf{{/code}} данными:
56
Ирина Сафонова 4.1 57 * Используется логин для авторизации в Cloud Director.
Ирина Сафонова 3.1 58
59 {{code language="none"}}
60 variable "vcd_user" {
61 default = "my-terraform"
62 description = "Cloud Director tenant user"
63 }
64
65 {{/code}}
66
Ирина Сафонова 4.1 67 * Используется пароль для авторизации в Cloud Director.
Ирина Сафонова 3.1 68
69 {{code language="none"}}
70 variable "vcd_pass" {
71 default = "my-password"
72 description = " Cloud Director tenant password"
73 }
74
75 {{/code}}
76
77 * Используется название Tenant Cloud Director
78
79 {{code language="none"}}
80 variable "vcd_org" {
81 default = "DataFort "
82 description = "Name tenant"
83 }
84
85 {{/code}}
86
Ирина Сафонова 4.1 87 * Используется название Virtual Data Center.
Ирина Сафонова 3.1 88
89 {{code language="none"}}
90 variable "vcd_vdc" {
91 default = "MY-VDC "
92 description = "Name Virtual Data Center"
93 }
94
95 {{/code}}
96
Ирина Сафонова 4.1 97 * Используется ссылка на подключение.
Ирина Сафонова 3.1 98
99 {{code language="none"}}
100 variable "vcd_url" {
101 default = " https://cloud3.datafort.ru/api"
102 description = "Cloud Director URL API"
103 }
104 variable "vcd_max_retry_timeout" {
105 default = "60"
106 }
107 variable "vcd_allow_unverified_ssl" {
108 default = "true"
109 description = "Disable SSL certificate"
110 }
111
112 {{/code}}
Ирина Сафонова 5.1 113
114 === Основные команды ===
115
Ирина Сафонова 27.2 116 (% class="table-bordered" style="width:544.818px" %)
Ирина Сафонова 29.1 117 (% style="background-color:#d3d3d3; text-align:center" %)|(% style="width:228px" %)**Команда**|(% style="width:315px" %)**Комментарий**
Ирина Сафонова 26.3 118 |(% style="width:228px" %){{code language="none"}}terraform -help{{/code}}|(% style="width:315px" %)Вывод справок.
119 |(% style="width:228px" %){{code language="none"}}terraform -version{{/code}}|(% style="width:315px" %)Вывод версии Terraform и установленных провайдеров.
Ирина Сафонова 27.1 120 |(% style="width:228px" %){{code language="none"}}terraform init{{/code}}|(% style="width:315px" %)Инициализация каталога Terraform.
121 |(% style="width:228px" %){{code language="none"}}terraform plan{{/code}}|(% style="width:315px" %)Генерация файла изменений и вывод изменений в инфраструктуре.
122 |(% style="width:228px" %){{code language="none"}}terraform apply{{/code}}|(% style="width:315px" %)Применение изменений конфигурации, изначально выводит список изменений и/или добавлений в инфраструктуру.
123 |(% style="width:228px" %){{code language="none"}}terraform destroy{{/code}}|(% style="width:315px" %)Удаление инфраструктуры.
124 |(% style="width:228px" %){{code language="none"}}terraform refresh{{/code}}|(% style="width:315px" %)Обновление состояния с локальным файлом и состоянием реальных ресурсов.
Ирина Сафонова 26.2 125
Ирина Сафонова 27.1 126 (% style="color:inherit; font-family:inherit; font-size:26px" %)Пример настройки
Ирина Сафонова 14.1 127
128 ----
129
Ирина Сафонова 48.1 130 В примере создается **vApp**, в него помещается [[виртуальная машина>>https://wiki.dfcloud.ru/bin/view/Glossary/%D0%92%D0%9C]] (ВМ) и подключается к существующей сети. В файле {{code language="none"}}main.tf{{/code}}:
Ирина Сафонова 14.1 131
Ирина Сафонова 31.1 132 ~1. Укажите провайдер поддерживаемой версии Cloud Director.
Ирина Сафонова 14.1 133
134 {{code language="none"}}
135 terraform {
136 required_providers {
137 vcd = {
138 source = "vmware/vcd"
139 version = "3.7.0"
140 }
141 }
142 }
143
144 {{/code}}
145
146 2. Подключитесь к **Tenant**.
147
148 {{code language="none"}}
149 provider "vcd" {
150 user = var.vcd_user
151 password = var.vcd_pass
152 auth_type = "integrated"
153 org = var.vcd_org
154 vdc = var.vcd_vdc
155 url = var.vcd_url
156 max_retry_timeout = var.vcd_max_retry_timeout
157 allow_unverified_ssl = var.vcd_allow_unverified_ssl
158 }
159
160 {{/code}}
161
Ирина Сафонова 48.1 162 3. Создайте **vApp** (виртуальное приложение).
Ирина Сафонова 14.1 163
164 {{code language="none"}}
165 resource "vcd_vapp" "vapp1" {
166 name = "my-first-vapp"
167 vdc = var.vcd_vdc
168 org = var.vcd_org
169 }
170
171 {{/code}}
172
173 4. Подключитесь в ручную созданную сеть **network** к **vApp** **my-first-vapp**.
174
175 {{code language="none"}}
176 resource "vcd_vapp_org_network" "is-net" {
177 vapp_name = "my-first-vapp"
178 vdc = var.vcd_vdc
179 org_network_name = "network"
180 depends_on = [vcd_vapp.vapp1]
181 }
182
183 {{/code}}
184
Ирина Сафонова 48.1 185 5. Создайте ВМ из шаблона в **vApp my-first-vapp** и включите кастомизацию ВМ с подключением сети **network**.
Ирина Сафонова 14.1 186
187 {{code language="none"}}
188 resource "vcd_vapp_vm" "vm1" {
189 vapp_name = vcd_vapp.vapp1.name
190 name = "my-first-vm"
191 computer_name = "myvm"
192 cpus = 4
193 cpu_cores = 2
194 memory = 4096
195 org = var.vcd_org
196 vdc = var.vcd_vdc
197 storage_profile = var.storage_br
198 os_type = "windows9Server64Guest"
199 catalog_name = var.catalog_name_templates
200 template_name = var.name_templates
201 depends_on = [vcd_vapp.vapp1, vcd_vapp_org_network.is-net]
202 customization {
203 enabled = true
204 force = true
205 change_sid = true
206 allow_local_admin_password = true
207 auto_generate_password = false
208 admin_password = "my-secure-password"
209 }
210
211 network {
212 adapter_type = "VMXNET3"
213 connected = true
214 ip_allocation_mode = "POOL"
215 is_primary = true
216 name = "network"
217 type = "org"
218 }
219 }
220
221 {{/code}}
222
Ирина Сафонова 30.1 223 Файл {{code language="none"}}variables.tf{{/code}}:
Ирина Сафонова 14.1 224
225 {{code language="none"}}
226 variable "vcd_user" {
227 default = "my-terraform"
228 description = "Cloud Director tenant user"
229 }
230 variable "vcd_pass" {
231 default = "my-password"
232 description = "Cloud Director tenant password"
233 }
234 variable "vcd_org" {
235 default = "DataFort"
236 description = "Tenant name"
237 }
238 variable "vcd_vdc" {
239 default = "MY-VDC"
240 description = "Name VDC"
241 }
242 variable "vcd_url" {
243 default = "https://cloud3.datafort.ru/api"
244 description = "URL Cloud Director API"
245 }
246 variable "vcd_max_retry_timeout" {
247 default = "60"
248 }
249 variable "vcd_allow_unverified_ssl" {
250 default = "true"
251 description = "Disable SSL certificate"
252 }
253 variable "storage_br" {
254 default = "HP3.1-VCD-Templates-Bronze-6"
255 }
256 variable "catalog_name_templates" {
257 default = "Windows"
258 description = "Name catalog templates"
259 }
260 variable "name_templates" {
261 default = "Win2016_DE_RUS DC3 vCD_tmp"
262 description = "Name templates"
263 }
264
265 {{/code}}
Ирина Сафонова 17.1 266
Ирина Сафонова 19.1 267 == Ссылки на документацию ==
Ирина Сафонова 17.1 268
269 ----
270
Ирина Сафонова 26.1 271 * [[https:~~/~~/registry.terraform.io/providers/vmware/vcd/latest/docs/resources/vapp_vm>>url:https://registry.terraform.io/providers/vmware/vcd/latest/docs/resources/vapp_vm]]  — конфигурация виртуальных машин и список используемых типов операционных систем.
Ирина Сафонова 25.1 272 * [[https:~~/~~/registry.terraform.io/providers/vmware/vcd/3.7.0/docs>>url:https://registry.terraform.io/providers/vmware/vcd/3.7.0/docs]] — перечисленные ресурсы для [[Cloud Director>>https://wiki.dfcloud.ru/bin/view/%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20Terraform%20%D0%BA%20vCD/#H41F43E43443A43B44E44743543D43843543ACloudDirector]].
Ирина Сафонова 18.1 273 * [[https:~~/~~/developer.hashicorp.com/terraform/downloads>>url:https://developer.hashicorp.com/terraform/downloads]] — ссылка на скачивание Terraform.