Skip to content

Commit 1f71f59

Browse files
Merge branch 'v0.19.0-fixes' into v0.19.0-merge
2 parents 14a05a2 + 1dd3416 commit 1f71f59

85 files changed

Lines changed: 1208 additions & 669 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 104 additions & 42 deletions
Large diffs are not rendered by default.

deprecated_variables.tf

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
variable "admin_password" {
2+
type = string
3+
default = null
4+
description = "DEPRECATED: This input has been moved to `account_credentials.admin_credentials.password` and will be removed with the release of version v1.0.0. Password to use for the default admin account created for the virtual machine. Passing this as a key vault secret value is recommended."
5+
sensitive = true
6+
}
7+
8+
variable "admin_ssh_keys" {
9+
type = list(object({
10+
public_key = string
11+
username = string
12+
}))
13+
default = []
14+
description = <<ADMIN_SSH_KEYS
15+
DEPRECATED: This input has been moved to `account_credentials.admin_credentials.ssh_keys` and will be removed with the release of version v1.0.0.
16+
A list of objects defining one or more ssh public keys
17+
18+
- `public_key` (Required) - The Public Key which should be used for authentication, which needs to be at least 2048-bit and in `ssh-rsa` format. Changing this forces a new resource to be created.
19+
- `username` (Required) - The Username for which this Public SSH Key should be configured. Changing this forces a new resource to be created. The Azure VM Agent only allows creating SSH Keys at the path `/home/{admin_username}/.ssh/authorized_keys`. As such this public key will be written to the authorized keys file. If no username is provided this module will use var.admin_username.
20+
21+
Example Input:
22+
23+
```hcl
24+
admin_ssh_keys = [
25+
{
26+
public_key = "<base64 string for the key>"
27+
username = "exampleuser"
28+
},
29+
{
30+
public_key = "<base64 string for the next user key>"
31+
username = "examleuser2"
32+
}
33+
]
34+
```
35+
ADMIN_SSH_KEYS
36+
}
37+
38+
variable "admin_username" {
39+
type = string
40+
default = "azureuser"
41+
description = "DEPRECATED: This input has been moved to `account_credentials.admin_credentials.username` and will be removed with the release of version v1.0.0. Name to use for the default admin account created for the virtual machine"
42+
nullable = false
43+
44+
validation {
45+
condition = !can(regex("^(administrator|admin|user|user1|test|user2|test2|user3|admin1|1|123|a|actuser|adm|admin2|aspnet|backup|console|david|guest|john|owner|root|server|sql|support|support_388945a0|sys|test2|test3|user4|user5)$", lower(var.admin_username)))
46+
error_message = "Admin username may not contain any of the following reserved values. ( administrator, admin, user, user1, test, user2, test1, user3, admin1, 1, 123, a, actuser, adm, admin2, aspnet, backup, console, david, guest, john, owner, root, server, sql, support, support_388945a0, sys, test2, test3, user4, user5 )"
47+
}
48+
validation {
49+
condition = can(regex("^.{1,64}$", var.admin_username))
50+
error_message = "Admin username for linux must be between 1 and 64 characters in length. Admin name for windows must be between 1 and 20 characters in length."
51+
}
52+
}
53+
54+
variable "disable_password_authentication" {
55+
type = bool
56+
default = true
57+
description = "DEPRECATED: This input has been moved to `account_credentials.password_authentication_disabled` and will be removed with the release of version v1.0.0. If true this value will disallow password authentication on linux vm's. This will require at least one public key to be configured. If using the option to auto generate passwords and keys, setting this value to `false` will cause a password to be generated an stored instead of an SSH key."
58+
nullable = false
59+
}
60+
61+
variable "generate_admin_password_or_ssh_key" {
62+
type = bool
63+
default = true
64+
description = "DEPRECATED: The logic behind this input has been moved to `account_credentials`. This input will be removed with the release of version v1.0.0. Set this value to true if the deployment should create a strong password for the admin user. If `os_type` is Linux, this will generate and store an SSH key as the default. However, setting `disable_password_authentication` to `false` will generate and store a password value instead of an ssh key."
65+
}
66+
67+
variable "generated_secrets_key_vault_secret_config" {
68+
type = object({
69+
key_vault_resource_id = string
70+
name = optional(string, null)
71+
expiration_date_length_in_days = optional(number, 45)
72+
content_type = optional(string, "text/plain")
73+
not_before_date = optional(string, null)
74+
tags = optional(map(string), {})
75+
})
76+
default = null
77+
description = <<DESCRIPTION
78+
DEPRECATED: The logic behind this input has been consolidated to `account_credentials.key_vault_configuration` to locate all credential related input into a single interface and help minimize configuration issues. This input will be removed with the release of version v1.0.0
79+
For simplicity this module provides the option to use an auto-generated admin user password or SSH key. That password or key is then stored in a key vault provided in the `admin_credential_key_vault_resource_id` input. This variable allows the user to override the configuration for the key vault secret which stores the generated password or ssh key. The object details are:
80+
81+
- `name` - (Optional) - The name to use for the key vault secret that stores the auto-generated ssh key or password
82+
- `expiration_date_length_in_days` - (Optional) - This value sets the number of days from the installation date to set the key vault expiration value. It defaults to `45` days. This value will not be overridden in subsequent runs. If you need to maintain this virtual machine resource for a long period, generate and/or use your own password or ssh key.
83+
- `content_type` - (Optional) - This value sets the secret content type. Defaults to `text/plain`
84+
- `not_before_date` - (Optional) - The UTC datetime (Y-m-d'T'H:M:S'Z) date before which this key is not valid. Defaults to null.
85+
- `tags` - (Optional) - Specific tags to assign to this secret resource
86+
DESCRIPTION
87+
}
File renamed without changes.
Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ It includes the following resources in addition to the VM resource:
1717

1818
```hcl
1919
terraform {
20-
required_version = "~> 1.6"
20+
required_version = ">= 1.9, < 2.0"
2121
required_providers {
2222
azurerm = {
2323
source = "hashicorp/azurerm"
2424
version = ">= 3.116, < 5.0"
2525
}
2626
random = {
2727
source = "hashicorp/random"
28-
version = "~> 3.6"
28+
version = "~> 3.7"
2929
}
3030
}
3131
}
@@ -36,6 +36,9 @@ provider "azurerm" {
3636
resource_group {
3737
prevent_deletion_if_contains_resources = false
3838
}
39+
key_vault {
40+
purge_soft_delete_on_destroy = true
41+
}
3942
}
4043
}
4144
@@ -46,7 +49,7 @@ module "naming" {
4649
4750
module "regions" {
4851
source = "Azure/avm-utl-regions/azurerm"
49-
version = "0.3.0"
52+
version = "0.5.0"
5053
5154
availability_zones_filter = true
5255
}
@@ -167,7 +170,7 @@ data "azurerm_client_config" "current" {}
167170
168171
module "avm_res_keyvault_vault" {
169172
source = "Azure/avm-res-keyvault-vault/azurerm"
170-
version = "=0.9.1"
173+
version = "=0.10.0"
171174
tenant_id = data.azurerm_client_config.current.tenant_id
172175
name = module.naming.key_vault.name_unique
173176
resource_group_name = azurerm_resource_group.this_rg.name
@@ -193,7 +196,7 @@ module "avm_res_keyvault_vault" {
193196
module "testvm" {
194197
source = "../../"
195198
#source = "Azure/avm-res-compute-virtualmachine/azurerm"
196-
#version = "0.17.0
199+
#version = "0.19.0"
197200
198201
enable_telemetry = var.enable_telemetry
199202
location = azurerm_resource_group.this_rg.location
@@ -203,8 +206,10 @@ module "testvm" {
203206
sku_size = module.vm_sku.sku
204207
zone = random_integer.zone_index.result
205208
206-
generated_secrets_key_vault_secret_config = {
207-
key_vault_resource_id = module.avm_res_keyvault_vault.resource_id
209+
account_credentials = {
210+
key_vault_configuration = {
211+
resource_id = module.avm_res_keyvault_vault.resource_id
212+
}
208213
}
209214
210215
source_image_reference = {
@@ -239,11 +244,11 @@ module "testvm" {
239244

240245
The following requirements are needed by this module:
241246

242-
- <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) (~> 1.6)
247+
- <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) (>= 1.9, < 2.0)
243248

244249
- <a name="requirement_azurerm"></a> [azurerm](#requirement\_azurerm) (>= 3.116, < 5.0)
245250

246-
- <a name="requirement_random"></a> [random](#requirement\_random) (~> 3.6)
251+
- <a name="requirement_random"></a> [random](#requirement\_random) (~> 3.7)
247252

248253
## Resources
249254

@@ -285,7 +290,7 @@ The following Modules are called:
285290

286291
Source: Azure/avm-res-keyvault-vault/azurerm
287292

288-
Version: =0.9.1
293+
Version: =0.10.0
289294

290295
### <a name="module_naming"></a> [naming](#module\_naming)
291296

@@ -303,7 +308,7 @@ Version: 0.2.1
303308

304309
Source: Azure/avm-utl-regions/azurerm
305310

306-
Version: 0.3.0
311+
Version: 0.5.0
307312

308313
### <a name="module_testvm"></a> [testvm](#module\_testvm)
309314

examples/basic_windows_w_additional_disks_public_ip/_footer.md renamed to examples/linux_default/_footer.md

File renamed without changes.
File renamed without changes.
Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
terraform {
2-
required_version = "~> 1.6"
2+
required_version = ">= 1.9, < 2.0"
33
required_providers {
44
azurerm = {
55
source = "hashicorp/azurerm"
66
version = ">= 3.116, < 5.0"
77
}
88
random = {
99
source = "hashicorp/random"
10-
version = "~> 3.6"
10+
version = "~> 3.7"
1111
}
1212
}
1313
}
@@ -18,6 +18,9 @@ provider "azurerm" {
1818
resource_group {
1919
prevent_deletion_if_contains_resources = false
2020
}
21+
key_vault {
22+
purge_soft_delete_on_destroy = true
23+
}
2124
}
2225
}
2326

@@ -28,7 +31,7 @@ module "naming" {
2831

2932
module "regions" {
3033
source = "Azure/avm-utl-regions/azurerm"
31-
version = "0.3.0"
34+
version = "0.5.0"
3235

3336
availability_zones_filter = true
3437
}
@@ -149,7 +152,7 @@ data "azurerm_client_config" "current" {}
149152

150153
module "avm_res_keyvault_vault" {
151154
source = "Azure/avm-res-keyvault-vault/azurerm"
152-
version = "=0.9.1"
155+
version = "=0.10.0"
153156
tenant_id = data.azurerm_client_config.current.tenant_id
154157
name = module.naming.key_vault.name_unique
155158
resource_group_name = azurerm_resource_group.this_rg.name
@@ -175,7 +178,7 @@ module "avm_res_keyvault_vault" {
175178
module "testvm" {
176179
source = "../../"
177180
#source = "Azure/avm-res-compute-virtualmachine/azurerm"
178-
#version = "0.17.0
181+
#version = "0.19.0"
179182

180183
enable_telemetry = var.enable_telemetry
181184
location = azurerm_resource_group.this_rg.location
@@ -185,8 +188,10 @@ module "testvm" {
185188
sku_size = module.vm_sku.sku
186189
zone = random_integer.zone_index.result
187190

188-
generated_secrets_key_vault_secret_config = {
189-
key_vault_resource_id = module.avm_res_keyvault_vault.resource_id
191+
account_credentials = {
192+
key_vault_configuration = {
193+
resource_id = module.avm_res_keyvault_vault.resource_id
194+
}
190195
}
191196

192197
source_image_reference = {

examples/basic_windows_w_additional_disks_public_ip/variables.tf renamed to examples/linux_default/variables.tf

File renamed without changes.

examples/common_ubuntu_w_ssh_auth/README.md renamed to examples/linux_ubuntu_w_ssh_auth/README.md

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@ It includes the following resources in addition to the VM resource:
2121

2222
```hcl
2323
terraform {
24-
required_version = "~> 1.6"
24+
required_version = ">= 1.9, < 2.0"
2525
required_providers {
2626
azurerm = {
2727
source = "hashicorp/azurerm"
2828
version = ">= 3.116, < 5.0"
2929
}
3030
random = {
3131
source = "hashicorp/random"
32-
version = "~> 3.6"
32+
version = "~> 3.7"
3333
}
3434
tls = {
3535
source = "hashicorp/tls"
@@ -44,6 +44,9 @@ provider "azurerm" {
4444
resource_group {
4545
prevent_deletion_if_contains_resources = false
4646
}
47+
key_vault {
48+
purge_soft_delete_on_destroy = true
49+
}
4750
}
4851
}
4952
@@ -54,7 +57,7 @@ module "naming" {
5457
5558
module "regions" {
5659
source = "Azure/avm-utl-regions/azurerm"
57-
version = "0.3.0"
60+
version = "0.5.0"
5861
5962
availability_zones_filter = true
6063
}
@@ -188,7 +191,7 @@ resource "azurerm_user_assigned_identity" "example_identity" {
188191
189192
module "avm_res_keyvault_vault" {
190193
source = "Azure/avm-res-keyvault-vault/azurerm"
191-
version = "=0.9.1"
194+
version = "=0.10.0"
192195
tenant_id = data.azurerm_client_config.current.tenant_id
193196
name = module.naming.key_vault.name_unique
194197
resource_group_name = azurerm_resource_group.this_rg.name
@@ -289,29 +292,24 @@ resource "azurerm_disk_encryption_set" "this" {
289292
module "testvm" {
290293
source = "../../"
291294
#source = "Azure/avm-res-compute-virtualmachine/azurerm"
292-
#version = "0.17.0
293-
294-
admin_username = "azureuser"
295-
enable_telemetry = var.enable_telemetry
296-
encryption_at_host_enabled = true
297-
generate_admin_password_or_ssh_key = false
298-
location = azurerm_resource_group.this_rg.location
299-
name = module.naming.virtual_machine.name_unique
300-
resource_group_name = azurerm_resource_group.this_rg.name
301-
os_type = "Linux"
302-
sku_size = module.vm_sku.sku
303-
zone = random_integer.zone_index.result
304-
305-
admin_ssh_keys = [
306-
{
307-
public_key = tls_private_key.this.public_key_openssh
308-
username = "azureuser" #the username must match the admin_username currently.
309-
},
310-
{
311-
public_key = tls_private_key.this_2.public_key_openssh
312-
username = "azureuser" #the username must match the admin_username currently.
295+
#version = "0.19.0"
296+
297+
enable_telemetry = var.enable_telemetry
298+
encryption_at_host_enabled = true
299+
location = azurerm_resource_group.this_rg.location
300+
name = module.naming.virtual_machine.name_unique
301+
resource_group_name = azurerm_resource_group.this_rg.name
302+
os_type = "Linux"
303+
sku_size = module.vm_sku.sku
304+
zone = random_integer.zone_index.result
305+
306+
account_credentials = {
307+
admin_credentials = {
308+
username = "azureuser"
309+
ssh_keys = [tls_private_key.this.public_key_openssh, tls_private_key.this_2.public_key_openssh]
310+
generate_admin_password_or_ssh_key = false
313311
}
314-
]
312+
}
315313
316314
data_disk_managed_disks = {
317315
disk1 = {
@@ -360,6 +358,7 @@ module "testvm" {
360358
private_ip_subnet_resource_id = module.vnet.subnets["vm_subnet_2"].resource_id
361359
}
362360
}
361+
is_primary = true
363362
}
364363
}
365364
@@ -407,11 +406,11 @@ module "testvm" {
407406

408407
The following requirements are needed by this module:
409408

410-
- <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) (~> 1.6)
409+
- <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) (>= 1.9, < 2.0)
411410

412411
- <a name="requirement_azurerm"></a> [azurerm](#requirement\_azurerm) (>= 3.116, < 5.0)
413412

414-
- <a name="requirement_random"></a> [random](#requirement\_random) (~> 3.6)
413+
- <a name="requirement_random"></a> [random](#requirement\_random) (~> 3.7)
415414

416415
- <a name="requirement_tls"></a> [tls](#requirement\_tls) (~> 4.0)
417416

@@ -462,7 +461,7 @@ The following Modules are called:
462461

463462
Source: Azure/avm-res-keyvault-vault/azurerm
464463

465-
Version: =0.9.1
464+
Version: =0.10.0
466465

467466
### <a name="module_naming"></a> [naming](#module\_naming)
468467

@@ -480,7 +479,7 @@ Version: 0.2.1
480479

481480
Source: Azure/avm-utl-regions/azurerm
482481

483-
Version: 0.3.0
482+
Version: 0.5.0
484483

485484
### <a name="module_testvm"></a> [testvm](#module\_testvm)
486485

File renamed without changes.

0 commit comments

Comments
 (0)