Terraform module to create Virtual Machines in Azure.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

727 lines
28KB

  1. ###
  2. # General
  3. ###
  4. variable "enabled" {
  5. description = "Enable or disable module"
  6. default = true
  7. }
  8. variable "resource_group_location" {
  9. description = "Specifies the supported Azure location where the resources exist. Changing this forces a new resource to be created."
  10. default = "eastus"
  11. }
  12. variable "resource_group_name" {
  13. description = "The name of the resource group in which to create the resources in this module. Changing this forces a new resource to be created."
  14. default = ""
  15. }
  16. variable "tags" {
  17. description = "Tags shared by all resources of this module. Will be merged with any other specific tags by resource"
  18. default = {}
  19. }
  20. variable "num_suffix_digits" {
  21. description = "How many digits to use for resources names."
  22. default = 0
  23. }
  24. ###
  25. # Availability set
  26. ###
  27. variable "availability_set_enabled" {
  28. description = "Whether or not to create an availability set."
  29. default = true
  30. }
  31. variable "availability_set_exists" {
  32. description = "If defined, the existing availability set will be used by virtual machines instead of creating a new availability set inside this module."
  33. default = false
  34. }
  35. variable "availability_set_name" {
  36. description = "Specifies the name of the availability set. Changing this forces a new resource to be created."
  37. default = ""
  38. }
  39. variable "availability_set_managed" {
  40. description = "Specifies whether the availability set is managed or not. Possible values are true (to specify aligned) or false (to specify classic)."
  41. default = true
  42. }
  43. variable "availability_set_platform_update_domain_count" {
  44. description = "Specifies the number of update domains that are used."
  45. default = 5
  46. }
  47. variable "availability_set_proximity_placement_group_id" {
  48. description = "The ID of the proximity placement group to which the virtual machine should be assigned. Changing this forces a new resource to be created."
  49. default = ""
  50. }
  51. variable "availability_set_platform_fault_domain_count" {
  52. description = "Specifies the number of fault domains that are used."
  53. default = 2
  54. }
  55. variable "availability_set_tags" {
  56. description = "Tags specific to the availability set."
  57. default = {}
  58. }
  59. ###
  60. # Network Interface
  61. ###
  62. variable "network_interface_enabled" {
  63. description = "Whether or not to create a network interface."
  64. default = true
  65. }
  66. variable "network_interface_external_names" {
  67. description = "If defined, this network interfaces will be used by other virtual machines instead of creating a new network interfaces inside this module."
  68. default = [""]
  69. }
  70. variable "network_interface_exists" {
  71. description = "If defined, will use var.network_interface_external_names to get network interfaces instead of creating a new network interfaces inside this module."
  72. default = false
  73. }
  74. variable "network_interface_count" {
  75. description = "How many Network Interfaces to create per Virtual Machine."
  76. default = 1
  77. }
  78. variable "network_interface_names" {
  79. description = "The name of the network interface. Changing this forces a new resource to be created."
  80. default = ["net-interface"]
  81. }
  82. variable "network_interface_network_security_group_ids" {
  83. description = "The IDs of the Network Security Groups to associate with the network interfaces."
  84. default = [""]
  85. }
  86. variable "network_interface_internal_dns_name_labels" {
  87. description = "Relative DNS names for this NIC used for internal communications between VMs in the same VNet."
  88. type = list(string)
  89. default = [""]
  90. }
  91. variable "network_interface_enable_ip_forwardings" {
  92. description = "Enables IP Forwarding on the NICs."
  93. type = list(bool)
  94. default = [false]
  95. }
  96. variable "network_interface_enable_accelerated_networkings" {
  97. description = "Enables Azure Accelerated Networking using SR-IOV. Only certain VM instance sizes are supported."
  98. type = list(bool)
  99. default = [false]
  100. }
  101. variable "network_interface_dns_servers" {
  102. description = "List of DNS servers IP addresses to use for this NIC, overrides the VNet-level server list"
  103. type = list(list(string))
  104. default = [null]
  105. }
  106. variable "network_interface_ip_configuration_names" {
  107. description = "User-defined name of the IPs for the Network Interfaces. Careful: this defines all the IP configurations meaning network_interface_count times vm_count."
  108. type = list(string)
  109. default = [""]
  110. }
  111. variable "network_interface_ip_configuration_primary" {
  112. description = "Boolean flag which describes if ip configuration is primary one or not. Must be `true` for the first `ip_configuration` when multiple are specified. Defaults to `fasle`."
  113. type = list(bool)
  114. default = [true]
  115. }
  116. variable "network_interface_ip_configuration_subnet_ids" {
  117. description = "Reference to subnets in which this NICs have been created. Required when private_ip_address_versions is IPv4. Careful: this defines all the IP configurations meaning network_interface_count times vm_count."
  118. type = list(string)
  119. default = [""]
  120. }
  121. variable "network_interface_ip_configuration_private_ip_addresses" {
  122. description = "Static IP Addresses. Careful: this defines all the IP configurations meaning network_interface_count times vm_count."
  123. type = list(string)
  124. default = [""]
  125. }
  126. variable "network_interface_ip_configuration_private_ip_address_allocations" {
  127. description = "Defines how a private IP addresses are assigned. Options are Static or Dynamic. Careful: this defines all the IP configurations meaning network_interface_count times vm_count."
  128. type = list(string)
  129. default = ["Dynamic"]
  130. }
  131. variable "network_interface_ip_configuration_private_ip_address_versions" {
  132. description = "The IP versions to use. Possible values are IPv4 or IPv6. Careful: this defines all the IP configurations meaning network_interface_count times vm_count."
  133. type = list(string)
  134. default = ["IPv4"]
  135. }
  136. variable "network_interface_ip_configuration_public_ip_address_ids" {
  137. description = "Reference to a Public IP Address to associate with this NIC. Careful: this defines all the IP configurations meaning network_interface_count times vm_count."
  138. type = list(string)
  139. default = [""]
  140. }
  141. variable "network_interface_tags" {
  142. description = "Tags specific to the network interface."
  143. default = {}
  144. }
  145. variable "network_interface_application_security_group_count" {
  146. description = "How many Network Interfaces security groups to associate per Network Interface."
  147. default = 0
  148. }
  149. variable "network_interface_application_security_group_ids" {
  150. description = "The IDs of the Application Security Groups which each Network Interfaces which should be connected to. Changing this forces a new resource to be created. Beware: network_interface_index value is the index per Virtual Machine."
  151. type = list(object({ network_interface_index = number, application_security_group_id = string }))
  152. default = [
  153. {
  154. network_interface_index = 0
  155. application_security_group_id = ""
  156. }
  157. ]
  158. }
  159. variable "network_interface_application_gateway_backend_address_pool_count" {
  160. description = "How many Gateway Backend Address Pools to associate per Network Interface."
  161. default = 0
  162. }
  163. variable "network_interface_application_gateway_backend_address_pool_ids" {
  164. description = "The IDs of the Application Gateway's Backend Address Pools which each Network Interfaces which should be connected to. Changing this forces a new resource to be created. Beware: network_interface_index value is the index per Virtual Machine."
  165. type = list(object({ network_interface_index = number, application_gateway_backend_address_pool_id = string }))
  166. default = [
  167. {
  168. network_interface_index = 0
  169. application_gateway_backend_address_pool_id = ""
  170. }
  171. ]
  172. }
  173. variable "network_interface_backend_address_pool_count" {
  174. description = "How many Backend Address Pools to associate per Network Interface."
  175. default = 0
  176. }
  177. variable "network_interface_backend_address_pool_ids" {
  178. description = "The IDs of the Load Balancer Backend Address Pools which each Network Interfaces which should be connected to. Changing this forces a new resource to be created. Beware: network_interface_index value is the index per Virtual Machine."
  179. type = list(object({ network_interface_index = number, backend_address_pool_id = string }))
  180. default = [
  181. {
  182. network_interface_index = 0
  183. backend_address_pool_id = ""
  184. }
  185. ]
  186. }
  187. variable "network_interface_nat_rule_association_count" {
  188. description = "How many NAT Rules to associate per Network Interface."
  189. default = 0
  190. }
  191. variable "network_interface_nat_rule_association_ids" {
  192. description = "The IDs of the Load Balancer NAT Rules which each Network Interfaces which should be connected to. Changing this forces a new resource to be created. Beware: network_interface_index value is the index per Virtual Machine."
  193. type = list(object({ network_interface_index = number, nat_rule_id = string }))
  194. default = [
  195. {
  196. network_interface_index = 0
  197. nat_rule_id = ""
  198. }
  199. ]
  200. }
  201. ###
  202. # Marketplace Agreement
  203. ###
  204. variable "marketplace_agreement_publishers" {
  205. description = "Should Ultra SSD disk be enabled for this Virtual Machine?"
  206. default = []
  207. }
  208. variable "marketplace_agreement_offers" {
  209. description = "Should Ultra SSD disk be enabled for this Virtual Machine?"
  210. default = []
  211. }
  212. variable "marketplace_agreement_plans" {
  213. description = "Should Ultra SSD disk be enabled for this Virtual Machine?"
  214. default = []
  215. }
  216. ###
  217. # Virtual Machine
  218. ###
  219. variable "vm_count" {
  220. description = "How many Virtual Machines to create."
  221. default = 1
  222. }
  223. variable "vm_names" {
  224. description = "Specifies the names of the Virtual Machine. Changing this forces a new resource to be created."
  225. type = list(string)
  226. default = ["vm"]
  227. }
  228. variable "vm_size" {
  229. description = "Specifies the size of the Virtual Machines. https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sizes?toc=%2Fazure%2Fvirtual-machines%2Fwindows%2Ftoc.json."
  230. default = "Standard_B2ms"
  231. }
  232. variable "zone_enabled" {
  233. description = "Boolean flag which describes whether or not enable the zone. Changing this will force a new resource to be created."
  234. default = false
  235. }
  236. variable "zone" {
  237. description = "The zone in which the virtual machine should be created. Changing this forces a new resource to be created."
  238. type = number
  239. default = null
  240. }
  241. variable "admin_username" {
  242. description = "Specifies the name of the virtual machine local administrator account."
  243. default = "testadmin"
  244. }
  245. variable "admin_password" {
  246. description = "The virtual machine password associated with the local administrator account."
  247. default = "Passw0rd_TO_BE_CHANGED!"
  248. }
  249. variable "allow_extension_operations" {
  250. description = "Boolean flag whcih provides the information about should the extension operations be allowed on the virtual machine? Chaning this forces a new resource to be created."
  251. default = true
  252. }
  253. variable "priority" {
  254. description = "Specfies the priority of the virtual machine. Posssible values are `regular` an `Spot`. Defaults to `Regular`. Changing this forces a new resourec to be created."
  255. default = "Regular"
  256. }
  257. variable "custom_data" {
  258. description = "The Base64-Encoded custom data which should be used for the virtual machine. Changing this forces a new resource to be created."
  259. default = null
  260. }
  261. variable "computer_names" {
  262. description = "Specifies the hostname which should be used for the virtual machine.If unspecified this defaults to the value of `vm_names` filed. Changing this forces a new resource to be created."
  263. type = list(string)
  264. default = [null]
  265. }
  266. variable "max_bid_price" {
  267. description = "The maximum price youre willing to pay for the vitual machine, in US Dollard; which must be greater tha the current spot price. If this bid price falls below the current spot price the virtual machine will be evicted using the `evction_policy`. Defaults to `-1`, which means that the virtual machine should not be evicted for the price reason."
  268. default = "-1"
  269. }
  270. variable "eviction_policy" {
  271. description = "Specifies what should happen when the virtual machine is evicted for the price reason when using the spot instance. At this time only supported value is `Deallocate`. Changing this forces a new resource to be created."
  272. default = "Deallocate"
  273. }
  274. variable "source_image_id" {
  275. description = "The ID of the image which the virtual machine should be created from. Changing this forces a new resource to be created."
  276. default = null
  277. }
  278. variable "dedicated_host_enabled" {
  279. description = "Boolean flag which describes whether the Decicated host id enabled or not."
  280. default = false
  281. }
  282. variable "dedicated_host_ids" {
  283. description = "The list IDs of a dedicated host where th emachien should be run on. Changing this forces a new resource to be created."
  284. type = list(string)
  285. default = [null]
  286. }
  287. variable "provision_vm_agent" {
  288. description = "Boolean flag which descibes should the Azure VM agent to provisioned on the virtual machine or not. Defaults to `true`. Changing this forces a new resource to be created."
  289. default = true
  290. }
  291. variable "proximity_placement_group_id" {
  292. description = "The ID of the proximity placement group which the virtual machine should be assigned to. Changing this forces a new resource to be created."
  293. default = null
  294. }
  295. variable "additional_capabilities_ultra_ssd_enabled" {
  296. description = "Should Ultra SSD disk be enabled for this Virtual Machine?"
  297. default = false
  298. }
  299. variable "boot_diagnostics_enabled" {
  300. description = "Boolean flag which describes whether or not enable the boot diagnostics setting for the virtual machine."
  301. default = false
  302. }
  303. variable "boot_diagnostics_storage_account_uri" {
  304. description = "The Storage Account's Blob Endpoint which should hold the virtual machine's diagnostic files."
  305. default = ""
  306. }
  307. variable "source_image_reference_publisher" {
  308. description = "Specifies the publisher of the image used to create the virtual machine. Changing this forces a new resource to be created."
  309. default = "MicrosoftWindowsServer"
  310. }
  311. variable "source_image_reference_offer" {
  312. description = "Specifies the offer of the image used to create the virtual machine. Changing this forces a new resource to be created."
  313. default = "WindowsServer"
  314. }
  315. variable "source_image_reference_sku" {
  316. description = "Specifies the SKU of the image used to create the virtual machine. Changing this forces a new resource to be created."
  317. default = "2016-Datacenter"
  318. }
  319. variable "source_image_reference_version" {
  320. description = "Specifies the version of the image used to create the virtual machine. Changing this forces a new resource to be created."
  321. default = "latest"
  322. }
  323. variable "identity_types" {
  324. description = "The list of types of Managed identity which should be assigned to the virtual machine. Possible values are `systemassigned`, `UserAssigned` and `SustemAssigned,UserAssigned`."
  325. default = [""]
  326. }
  327. variable "identity_identity_ids" {
  328. description = "A list of list of User managed identity ID's which should be assigned to the virtual machine."
  329. type = list(list(string))
  330. default = [null]
  331. }
  332. variable "os_disk_caching" {
  333. description = "Specifies the caching requirements for the OS Disk. Possible values include None, ReadOnly and ReadWrite."
  334. default = "ReadWrite"
  335. }
  336. variable "os_disk_size_gb" {
  337. description = "Specifies the size of the OS Disk in gigabytes."
  338. default = 30
  339. }
  340. variable "os_disk_storage_account_type" {
  341. description = "The type of storage account which should back the internal OS disk. Possible values are `Standard_LRS`, `StandardSSD_LRS` and `Premium_LRS`. Changing this forces a new resource to be created."
  342. default = "Standard_LRS"
  343. }
  344. variable "os_disk_encryption_set_id" {
  345. description = "The ID of the Disk encryption set which should be used to encrypt the OS disk. `NOTE: The Disk encryption set must have the `READER` role assignmnet scoped on the key vault- in addition to an access policy to the key vault`."
  346. default = null
  347. }
  348. variable "diff_disk_settings_option" {
  349. description = "Specifies the Ephemeral disk settings for the OS Disk. At this time the only possible value is `local`. Changing this forces a new resource to be created."
  350. default = ""
  351. }
  352. variable "plan_name" {
  353. description = "Specifies the name of the image from the marketplace."
  354. default = ""
  355. }
  356. variable "plan_publisher" {
  357. description = "Specifies the publisher of the image."
  358. default = ""
  359. }
  360. variable "plan_product" {
  361. description = "Specifies the product of the image from the marketplace."
  362. default = ""
  363. }
  364. variable "secret_key_vault_id" {
  365. description = "The ID of the key vault from where all the certificates or secrets are stored. This can be source from `id` filed from the `azurerm_key_vault` resource."
  366. default = ""
  367. }
  368. variable "certificate_url" {
  369. description = "The Secret URL of the Key vault certificate.This can be sourced from the `secret_url` field within the `azurerm_key_vault_certificate` resource."
  370. default = ""
  371. }
  372. variable "vm_tags" {
  373. description = "Tags specific to the Virtual Machines."
  374. default = {}
  375. }
  376. ###
  377. # Windows virtual machine
  378. ###
  379. variable "windows_vm_enabled" {
  380. description = "Whether or not create windows virtual machine."
  381. default = false
  382. }
  383. variable "windows_timezone" {
  384. description = "Specifies the timezone which should be used by the virtual machine. The possible values are defined over here: https://jackstromberg.com/2017/01/list-of-time-zones-consumed-by-azure/ "
  385. default = "UTC"
  386. }
  387. variable "windows_license_type" {
  388. description = "Specifies the type of on-premise license (also know as `Azure Hybrid Use Benefits`) which should be used for the virtual machine. Possible values are `None`, `Windows_client` and `Windows_Server`. Changing this forces a new resource to be created."
  389. default = ""
  390. }
  391. variable "windows_enable_automatic_updates" {
  392. description = "Specifies if the automatic updates are enabled for the windows virtual machine. Changing this forces a new resource to be created."
  393. default = false
  394. }
  395. variable "additional_unattend_content_windows_setting" {
  396. description = "Specifies the name of the setting to which the content applies. Possible values are: `FirstLogonCommands` and `AutoLogon`."
  397. default = "FirstLogonCommands"
  398. }
  399. variable "additional_unattend_content_windows_content" {
  400. description = "Specifies the base-64 encoded XML formatted content that is added to the unattend.xml file for the specified path and component."
  401. default = ""
  402. }
  403. variable "windows_certificate_store" {
  404. description = "The certificate store on the windows virtual machine where the certificate should be added."
  405. default = ""
  406. }
  407. variable "winrm_listener_protocol" {
  408. description = "Specifies the protocol of listener. Possible values are `Http` or `Https`."
  409. default = "Http"
  410. }
  411. variable "winrm_listener_certificate_url" {
  412. description = "The ID of the Key Vault Secret which contains the encrypted Certificate which should be installed on the Virtual Machine. This certificate must also be specified in the vault_certificates block within the os_profile_secrets block."
  413. default = ""
  414. }
  415. ###
  416. # Linux virtual machine
  417. ###
  418. variable "linux_vm_enabled" {
  419. description = "Boolean flag which describes whether or not enable the linux virtual machine resource."
  420. default = false
  421. }
  422. variable "linux_admin_ssh_keys" {
  423. description = "One or more admin ssh_key blocks. `NOTE`: One of either `admin_password` or `admin_ssh_key must be specified`."
  424. type = list(object({ public_key = string, username = string }))
  425. default = [null]
  426. }
  427. ###
  428. # Managed Disks
  429. ###
  430. variable "managed_disk_count" {
  431. description = "How many additional managed disk to attach to EACH Virtual Machines."
  432. default = 0
  433. }
  434. variable "managed_disk_names" {
  435. description = "Specifies the names of the Managed Disks. Changing this forces a new resource to be created."
  436. type = list(string)
  437. default = ["vm-manage-disk"]
  438. }
  439. variable "managed_disk_storage_account_types" {
  440. description = "The types of storage to use for the Managed Disks. Possible values inside the list are Standard_LRS, Premium_LRS, StandardSSD_LRS or UltraSSD_LRS."
  441. type = list(string)
  442. default = ["Standard_LRS"]
  443. }
  444. variable "managed_disk_size_gbs" {
  445. description = "Specifies the sizes of the Managed Disks to create in gigabytes. If create_option is Copy or FromImage, then the value must be equal to or greater than the source's size."
  446. type = list(number)
  447. default = [5]
  448. }
  449. variable "managed_disk_create_options" {
  450. description = "The methods to use when creating the Managed Disks. Possible values include: Empty, FromImage, Copy, Import, Restore."
  451. type = list(string)
  452. default = ["Empty"]
  453. }
  454. variable "managed_disk_image_reference_ids" {
  455. description = "IDs of an existing platform/marketplace disk image to copy when create_option is FromImage. CAREFUL: if you create multiple Managed Disks with different create_option, make sure this list matches with the disks having \"FromImage\" on (meaning this list may have empty values)."
  456. type = list(string)
  457. default = [""]
  458. }
  459. variable "managed_disk_source_resource_ids" {
  460. description = "The IDs of existing Managed Disks to copy create_option is Copy or the recovery points to restore when create_option is Restore. CAREFUL: if you create multiple Managed Disks with different create_option, make sure this list matches with the disks having \"Copy\"/\"Restore\" on (meaning this list may have empty values)."
  461. type = list(string)
  462. default = [""]
  463. }
  464. variable "managed_disk_source_uris" {
  465. description = "URI to a valid VHD file to be used when create_option is Import. CAREFUL: if you create multiple Managed Disks with different create_option, make sure this list matches with the disks having \"Import\" on (meaning this list may have empty values)."
  466. type = list(string)
  467. default = [""]
  468. }
  469. variable "managed_disk_os_types" {
  470. description = "Specify values when the source of an Import or Copy operation targets a source that contains an operating system. Valid values inside the list are Linux or Windows. CAREFUL: if you create multiple Managed Disks with different create_option, make sure this list matches with the disks having \"Copy\"/\"Import\" on (meaning this list may have empty values)."
  471. type = list(string)
  472. default = ["Windows"]
  473. }
  474. variable "managed_disk_encryption_settings_enabled" {
  475. description = "Boolean flag which describes whether the encryption is enabled on the managed disk or not. Changing this forces a new resource to be created."
  476. type = bool
  477. default = false
  478. }
  479. variable "managed_disk_encryption_key_secret_url" {
  480. description = "Refeerence to the URL of the key vault secret used as the disk encryption key. This can be found as `id` on the `azurerm_key_vault_secret` resource."
  481. type = string
  482. default = ""
  483. }
  484. variable "managed_disk_encryption_key_source_vault_id" {
  485. description = "The URl of the key vault. This can be found as `Vault_uri` on the `azurerm_key_vault` resource."
  486. type = string
  487. default = ""
  488. }
  489. variable "managed_disk_key_encryption_key_key_url" {
  490. description = "The URL to the key vault key used as the key encryption key. This can be found as `id` on the `azurerm_key_vault_key` resource."
  491. type = string
  492. default = ""
  493. }
  494. variable "managed_disk_key_encryption_key_source_valut_id" {
  495. description = "The ID of the source key vault."
  496. type = string
  497. default = ""
  498. }
  499. variable "managed_data_disk_cachings" {
  500. description = "Specifies the caching requirements for the Managed Disks. Possible values include None, ReadOnly and ReadWrite."
  501. type = list(string)
  502. default = ["ReadWrite"]
  503. }
  504. variable "managed_data_disk_write_accelerator_enableds" {
  505. description = "Specifies if Write Accelerator is enabled on Managed Disks. This can only be enabled on Premium_LRS managed disks with no caching and M-Series VMs."
  506. type = list(bool)
  507. default = [false]
  508. }
  509. variable "managed_data_disk_create_options" {
  510. description = "Specifies the list of create option of the data disk such as `Empty` or `Attach`. Defaults to `Attach`. Changing this forces a new resource to be created."
  511. type = list(string)
  512. default = ["Attach"]
  513. }
  514. variable "vm_type" {
  515. description = "The type of Virtual Machine. Can be either \"Linux\" or \"Windows\"."
  516. default = "Windows"
  517. }
  518. variable "managed_disk_tags" {
  519. description = "Tags specific to the Managed Disks."
  520. default = {}
  521. }
  522. ###
  523. # Virtual machine extensions
  524. ###
  525. variable "vm_extensions_enabled" {
  526. description = "Booelan flag which describes whether or not to enable the virtual machine extensions."
  527. default = false
  528. }
  529. variable "vm_extension_count" {
  530. description = "How many extensions have to be configured to EACH virtual machine."
  531. type = number
  532. default = 1
  533. }
  534. variable "vm_extension_names" {
  535. description = "The list of names of virtual machine extension peering. Changing this forces a new resource to be created."
  536. type = list(string)
  537. default = [""]
  538. }
  539. variable "vm_extension_types" {
  540. description = "List which specifies the type of extension, available types for a publisher can be found using Azure CLI. `NOTE`: The `Publisher` and `Type` of virtual machine extension can be found using the Azure CLI, via: `shell $ az vm extension image list --location westus -o table`."
  541. type = list(string)
  542. default = [""]
  543. }
  544. variable "vm_extension_settings" {
  545. description = "List of settings passed to the extension, these are specified as a JSON object in a string. Please `Note`: Certain VM Extensions require that the keys in the `settings` block are case sensitive. If you're seeing unhelpful errors, please ensure the keys are consistent with how Azure is expecting them (for instance, for the `JsonADDomainExtension extension`, the keys are expected to be in `TitleCase`.)."
  546. type = list(string)
  547. default = [""]
  548. }
  549. variable "vm_extension_publishers" {
  550. description = "The List of publisher of the extensions, available publisher can be found by using the Azure CLI `via: az vm extension image list --location westus -o table`."
  551. type = list(string)
  552. default = [""]
  553. }
  554. variable "vm_extension_protected_settings" {
  555. description = "The list of protected settings passed to the extension, like settings, these are specified as a JSON object in a string."
  556. type = list(string)
  557. default = [""]
  558. }
  559. variable "vm_extension_type_handler_versions" {
  560. description = "Specifies the list of version of the extensions to use, available versions can be found using Azure CLI."
  561. type = list(string)
  562. default = [""]
  563. }
  564. variable "vm_extension_auto_upgarde_minor_version" {
  565. description = "Boolean flag list which describes if the platform deploys the latest minor version update to the `type_handler_version` specified."
  566. default = [false]
  567. }
  568. variable "vm_extension_tags" {
  569. description = "Tags which will be associated to the virtual machine extensions."
  570. default = {}
  571. }
  572. ##
  573. # Osdisk encryption
  574. ##
  575. variable "osdisk_encryption_enabled" {
  576. description = "Boolean flag which describes whether or not enable the OS disk encryption."
  577. default = false
  578. }
  579. variable "osdisk_encryption_keyvault_url" {
  580. description = "The url of the key vault. And it has to be in specific format when deploying example: `https://key_vault_name.vault.azure.net`"
  581. type = string
  582. default = ""
  583. }
  584. variable "osdisk_encryption_keyvault_resource_id" {
  585. description = "The ID of the key vault. The can be obtained from `id` attribute of the key vault resource."
  586. type = string
  587. default = ""
  588. }
  589. variable "osdisk_encryption_key_encryption_key_urls" {
  590. description = "The list of IDs of the key valut key resource. This can be obtained from `id` attribute of `key_vault_key resource`"
  591. type = list(string)
  592. default = [""]
  593. }