Skip to content

Commit 6e8548e

Browse files
committed
adding support to terraform v0.13
1 parent 54f1070 commit 6e8548e

File tree

12 files changed

+183
-36
lines changed

12 files changed

+183
-36
lines changed

examples/README.md

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ This terraform module is designed to deploy azure Windows or Linux virtual machi
99
```hcl
1010
module "virtual-machine" {
1111
source = "kumarvna/virtual-machine/azurerm"
12-
version = "1.0.0"
12+
version = "2.0.0"
1313
1414
# Resource Group, location, VNet and Subnet details
1515
resource_group_name = "rg-hub-demo-internal-shared-westeurope-001"
@@ -18,6 +18,10 @@ module "virtual-machine" {
1818
subnet_name = "snet-management-default-hub-westeurope"
1919
virtual_machine_name = "vm-linux"
2020
21+
# (Optional) To enable Azure Monitoring and install log analytics agents
22+
log_analytics_workspace_name = var.log_analytics_workspace_id
23+
hub_storage_account_name = var.hub_storage_account_id
24+
2125
# This module support multiple Pre-Defined Linux and Windows Distributions.
2226
# Linux images: ubuntu1804, ubuntu1604, centos75, centos77, centos81, coreos
2327
# Windows Images: windows2012r2dc, windows2016dc, windows2019dc, windows2016dccore
@@ -29,7 +33,7 @@ module "virtual-machine" {
2933
# Bring your own License (BOYL) images: mssql2019ent-byol, mssql2019std-byol
3034
os_flavor = "linux"
3135
linux_distribution_name = "ubuntu1804"
32-
virtual_machine_size = "Standard_A2_v2"
36+
virtual_machine_size = "Standard_A2_v2"
3337
generate_admin_ssh_key = false
3438
admin_ssh_key_data = "~/.ssh/id_rsa.pub"
3539
instances_count = 2
@@ -70,14 +74,18 @@ module "virtual-machine" {
7074
```hcl
7175
module "virtual-machine" {
7276
source = "kumarvna/virtual-machine/azurerm"
73-
version = "1.0.0"
77+
version = "2.0.0"
7478
7579
# Resource Group, location, VNet and Subnet details
7680
resource_group_name = "rg-hub-demo-internal-shared-westeurope-001"
7781
location = "westeurope"
7882
virtual_network_name = "vnet-default-hub-westeurope"
7983
subnet_name = "snet-management-default-hub-westeurope"
80-
virtual_machine_name = "vm-winsrv"
84+
virtual_machine_name = "vm-linux"
85+
86+
# (Optional) To enable Azure Monitoring and install log analytics agents
87+
log_analytics_workspace_name = var.log_analytics_workspace_id
88+
hub_storage_account_name = var.hub_storage_account_id
8189
8290
# This module support multiple Pre-Defined Linux and Windows Distributions.
8391
# Linux images: ubuntu1804, ubuntu1604, centos75, centos77, centos81, coreos
@@ -88,10 +96,10 @@ module "virtual-machine" {
8896
# RHEL8 images: mssql2019ent-rhel8, mssql2019std-rhel8, mssql2019dev-rhel8
8997
# Ubuntu images: mssql2019ent-ubuntu1804, mssql2019std-ubuntu1804, mssql2019dev-ubuntu1804
9098
# Bring your own License (BOYL) images: mssql2019ent-byol, mssql2019std-byol
91-
os_flavor = "windows"
92-
windows_distribution_name = "windows2019dc"
93-
virtual_machine_size = "Standard_A2_v2"
94-
admin_username = "azureadmin"
99+
os_flavor = "windows"
100+
windows_distribution_name = "windows2019dc"
101+
virtual_machine_size = "Standard_A2_v2"
102+
admin_username = "azureadmin"
95103
admin_password = "complex_password"
96104
instances_count = 2
97105
enable_vm_availability_set = true
@@ -132,14 +140,18 @@ module "virtual-machine" {
132140
```hcl
133141
module "virtual-machine" {
134142
source = "kumarvna/virtual-machine/azurerm"
135-
version = "1.0.0"
143+
version = "2.0.0"
136144
137145
# Resource Group, location, VNet and Subnet details
138146
resource_group_name = "rg-hub-demo-internal-shared-westeurope-001"
139147
location = "westeurope"
140148
virtual_network_name = "vnet-default-hub-westeurope"
141149
subnet_name = "snet-management-default-hub-westeurope"
142-
virtual_machine_name = "vm-mssql"
150+
virtual_machine_name = "vm-linux"
151+
152+
# (Optional) To enable Azure Monitoring and install log analytics agents
153+
log_analytics_workspace_name = var.log_analytics_workspace_id
154+
hub_storage_account_name = var.hub_storage_account_id
143155
144156
# This module support multiple Pre-Defined Linux and Windows Distributions.
145157
# Linux images: ubuntu1804, ubuntu1604, centos75, centos77, centos81, coreos
@@ -152,7 +164,7 @@ module "virtual-machine" {
152164
# Bring your own License (BOYL) images: mssql2019ent-byol, mssql2019std-byol
153165
os_flavor = "windows"
154166
windows_distribution_name = "mssql2017std"
155-
virtual_machine_size = "Standard_A2_v2"
167+
virtual_machine_size = "Standard_A2_v2"
156168
admin_username = "azureadmin"
157169
admin_password = "complex_password"
158170
instances_count = 2

examples/linux_virtual_machine/README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ This terraform module is designed to deploy azure Linux virtual machines with Pu
77
```hcl
88
module "virtual-machine" {
99
source = "kumarvna/virtual-machine/azurerm"
10-
version = "1.0.0"
10+
version = "2.0.0"
1111
1212
# Resource Group, location, VNet and Subnet details
1313
resource_group_name = "rg-hub-demo-internal-shared-westeurope-001"
@@ -16,6 +16,10 @@ module "virtual-machine" {
1616
subnet_name = "snet-management-default-hub-westeurope"
1717
virtual_machine_name = "vm-linux"
1818
19+
# (Optional) To enable Azure Monitoring and install log analytics agents
20+
log_analytics_workspace_name = var.log_analytics_workspace_id
21+
hub_storage_account_name = var.hub_storage_account_id
22+
1923
# This module support multiple Pre-Defined Linux and Windows Distributions.
2024
# Linux images: ubuntu1804, ubuntu1604, centos75, centos77, centos81, coreos
2125
# Windows Images: windows2012r2dc, windows2016dc, windows2019dc, windows2016dccore
@@ -27,7 +31,7 @@ module "virtual-machine" {
2731
# Bring your own License (BOYL) images: mssql2019ent-byol, mssql2019std-byol
2832
os_flavor = "linux"
2933
linux_distribution_name = "ubuntu1804"
30-
virtual_machine_size = "Standard_A2_v2"
34+
virtual_machine_size = "Standard_A2_v2"
3135
generate_admin_ssh_key = false
3236
admin_ssh_key_data = "~/.ssh/id_rsa.pub"
3337
instances_count = 2

examples/linux_virtual_machine/main.tf

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module "virtual-machine" {
22
source = "kumarvna/virtual-machine/azurerm"
3-
version = "1.0.0"
3+
version = "2.0.0"
44

55
# Resource Group, location, VNet and Subnet details
66
resource_group_name = "rg-hub-demo-internal-shared-westeurope-001"
@@ -9,6 +9,10 @@ module "virtual-machine" {
99
subnet_name = "snet-management-default-hub-westeurope"
1010
virtual_machine_name = "vm-linux"
1111

12+
# (Optional) To enable Azure Monitoring and install log analytics agents
13+
log_analytics_workspace_name = var.log_analytics_workspace_id
14+
hub_storage_account_name = var.hub_storage_account_id
15+
1216
# This module support multiple Pre-Defined Linux and Windows Distributions.
1317
# Linux images: ubuntu1804, ubuntu1604, centos75, centos77, centos81, coreos
1418
# Windows Images: windows2012r2dc, windows2016dc, windows2019dc, windows2016dccore

examples/mssql_windows_virtual_machine/README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,18 @@ This terraform module is designed to deploy azure MSSQL Windows virtual machines
77
```hcl
88
module "virtual-machine" {
99
source = "kumarvna/virtual-machine/azurerm"
10-
version = "1.0.0"
10+
version = "2.0.0"
1111
1212
# Resource Group, location, VNet and Subnet details
1313
resource_group_name = "rg-hub-demo-internal-shared-westeurope-001"
1414
location = "westeurope"
1515
virtual_network_name = "vnet-default-hub-westeurope"
1616
subnet_name = "snet-management-default-hub-westeurope"
17-
virtual_machine_name = "vm-mssql"
17+
virtual_machine_name = "vm-linux"
18+
19+
# (Optional) To enable Azure Monitoring and install log analytics agents
20+
log_analytics_workspace_name = var.log_analytics_workspace_id
21+
hub_storage_account_name = var.hub_storage_account_id
1822
1923
# This module support multiple Pre-Defined Linux and Windows Distributions.
2024
# Linux images: ubuntu1804, ubuntu1604, centos75, centos77, centos81, coreos

examples/mssql_windows_virtual_machine/main.tf

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
module "virtual-machine" {
22
source = "kumarvna/virtual-machine/azurerm"
3-
version = "1.0.0"
3+
version = "2.0.0"
44

55
# Resource Group, location, VNet and Subnet details
66
resource_group_name = "rg-hub-demo-internal-shared-westeurope-001"
77
location = "westeurope"
88
virtual_network_name = "vnet-default-hub-westeurope"
99
subnet_name = "snet-management-default-hub-westeurope"
10-
virtual_machine_name = "vm-mssql"
10+
virtual_machine_name = "vm-linux"
11+
12+
# (Optional) To enable Azure Monitoring and install log analytics agents
13+
log_analytics_workspace_name = var.log_analytics_workspace_id
14+
hub_storage_account_name = var.hub_storage_account_id
1115

1216
# This module support multiple Pre-Defined Linux and Windows Distributions.
1317
# Linux images: ubuntu1804, ubuntu1604, centos75, centos77, centos81, coreos

examples/windows_virtual_machine/README.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,18 @@ This terraform module is designed to deploy azure Windows virtual machines with
77
```hcl
88
module "virtual-machine" {
99
source = "kumarvna/virtual-machine/azurerm"
10-
version = "1.0.0"
10+
version = "2.0.0"
1111
1212
# Resource Group, location, VNet and Subnet details
1313
resource_group_name = "rg-hub-demo-internal-shared-westeurope-001"
1414
location = "westeurope"
1515
virtual_network_name = "vnet-default-hub-westeurope"
1616
subnet_name = "snet-management-default-hub-westeurope"
17-
virtual_machine_name = "vm-winsrv"
17+
virtual_machine_name = "vm-linux"
18+
19+
# (Optional) To enable Azure Monitoring and install log analytics agents
20+
log_analytics_workspace_name = var.log_analytics_workspace_id
21+
hub_storage_account_name = var.hub_storage_account_id
1822
1923
# This module support multiple Pre-Defined Linux and Windows Distributions.
2024
# Linux images: ubuntu1804, ubuntu1604, centos75, centos77, centos81, coreos
@@ -25,18 +29,18 @@ module "virtual-machine" {
2529
# RHEL8 images: mssql2019ent-rhel8, mssql2019std-rhel8, mssql2019dev-rhel8
2630
# Ubuntu images: mssql2019ent-ubuntu1804, mssql2019std-ubuntu1804, mssql2019dev-ubuntu1804
2731
# Bring your own License (BOYL) images: mssql2019ent-byol, mssql2019std-byol
28-
os_flavor = "windows"
29-
windows_distribution_name = "windows2019dc"
30-
virtual_machine_size = "Standard_A2_v2"
31-
admin_username = "azureadmin"
32+
os_flavor = "windows"
33+
windows_distribution_name = "windows2019dc"
34+
virtual_machine_size = "Standard_A2_v2"
35+
admin_username = "azureadmin"
3236
admin_password = "complex_password"
3337
instances_count = 2
3438
enable_vm_availability_set = true
3539
enable_public_ip_address = true
3640
3741
# Network Seurity group port allow definitions for each Virtual Machine
3842
# NSG association to be added automatically for all network interfaces.
39-
# SSH port 22 and 3389 is exposed to the Internet recommended for only testing.
43+
# SSH port 22 and 3389 is exposed to the Internet recommended for only testing.
4044
# For production environments, recommended to use a VPN or private connection.
4145
nsg_inbound_rules = [
4246
{

examples/windows_virtual_machine/main.tf

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
module "virtual-machine" {
22
source = "kumarvna/virtual-machine/azurerm"
3-
version = "1.0.0"
4-
3+
version = "2.0.0"
54

65
# Resource Group, location, VNet and Subnet details
76
resource_group_name = "rg-hub-demo-internal-shared-westeurope-001"
87
location = "westeurope"
98
virtual_network_name = "vnet-default-hub-westeurope"
109
subnet_name = "snet-management-default-hub-westeurope"
11-
virtual_machine_name = "vm-winsrv"
10+
virtual_machine_name = "vm-linux"
11+
12+
# (Optional) To enable Azure Monitoring and install log analytics agents
13+
log_analytics_workspace_name = var.log_analytics_workspace_id
14+
hub_storage_account_name = var.hub_storage_account_id
1215

1316
# This module support multiple Pre-Defined Linux and Windows Distributions.
1417
# Linux images: ubuntu1804, ubuntu1604, centos75, centos77, centos81, coreos

graph.png

68.5 KB
Loading

main.tf

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,18 @@ data "azurerm_subnet" "snet" {
3333
resource_group_name = data.azurerm_resource_group.rg.name
3434
}
3535

36+
data "azurerm_log_analytics_workspace" "logws" {
37+
count = var.log_analytics_workspace_name != null ? 1 : 0
38+
name = var.log_analytics_workspace_name
39+
resource_group_name = data.azurerm_resource_group.rg.name
40+
}
41+
42+
data "azurerm_storage_account" "storeacc" {
43+
count = var.hub_storage_account_name != null ? 1 : 0
44+
name = var.hub_storage_account_name
45+
resource_group_name = data.azurerm_resource_group.rg.name
46+
}
47+
3648
resource "random_password" "passwd" {
3749
count = var.disable_password_authentication != true || var.os_flavor == "windows" && var.admin_password == null ? 1 : 0
3850
length = 24
@@ -215,3 +227,77 @@ resource "azurerm_windows_virtual_machine" "win_vm" {
215227
}
216228
}
217229

230+
#--------------------------------------------------------------
231+
# Azure Log Analytics Workspace Agent Installation for windows
232+
#--------------------------------------------------------------
233+
resource "azurerm_virtual_machine_extension" "omsagentwin" {
234+
count = var.log_analytics_workspace_name != null && var.os_flavor == "windows" ? var.instances_count : 0
235+
name = var.instances_count == 1 ? "OmsAgentForWindows" : format("%s%s", "OmsAgentForWindows", count.index + 1)
236+
virtual_machine_id = azurerm_windows_virtual_machine.win_vm[count.index].id
237+
publisher = "Microsoft.EnterpriseCloud.Monitoring"
238+
type = "MicrosoftMonitoringAgent"
239+
type_handler_version = "1.0"
240+
auto_upgrade_minor_version = true
241+
242+
settings = <<SETTINGS
243+
{
244+
"workspaceId": "${data.azurerm_log_analytics_workspace.logws.0.workspace_id}"
245+
}
246+
SETTINGS
247+
248+
protected_settings = <<PROTECTED_SETTINGS
249+
{
250+
"workspaceKey": "${data.azurerm_log_analytics_workspace.logws.0.primary_shared_key}"
251+
}
252+
PROTECTED_SETTINGS
253+
}
254+
255+
#--------------------------------------------------------------
256+
# Azure Log Analytics Workspace Agent Installation for Linux
257+
#--------------------------------------------------------------
258+
resource "azurerm_virtual_machine_extension" "omsagentlinux" {
259+
count = var.log_analytics_workspace_name != null && var.os_flavor == "linux" ? var.instances_count : 0
260+
name = var.instances_count == 1 ? "OmsAgentForLinux" : format("%s%s", "OmsAgentForLinux", count.index + 1)
261+
virtual_machine_id = azurerm_linux_virtual_machine.linux_vm[count.index].id
262+
publisher = "Microsoft.EnterpriseCloud.Monitoring"
263+
type = "OmsAgentForLinux"
264+
type_handler_version = "1.13"
265+
auto_upgrade_minor_version = true
266+
267+
settings = <<SETTINGS
268+
{
269+
"workspaceId": "${data.azurerm_log_analytics_workspace.logws.0.workspace_id}"
270+
}
271+
SETTINGS
272+
273+
protected_settings = <<PROTECTED_SETTINGS
274+
{
275+
"workspaceKey": "${data.azurerm_log_analytics_workspace.logws.0.primary_shared_key}"
276+
}
277+
PROTECTED_SETTINGS
278+
}
279+
280+
281+
#--------------------------------------
282+
# azurerm monitoring diagnostics
283+
#--------------------------------------
284+
resource "azurerm_monitor_diagnostic_setting" "nsg" {
285+
count = var.log_analytics_workspace_name != null && var.hub_storage_account_name != null ? 1 : 0
286+
name = lower("nsg-${var.virtual_machine_name}-diag")
287+
target_resource_id = azurerm_network_security_group.nsg.id
288+
storage_account_id = data.azurerm_storage_account.storeacc.0.id
289+
log_analytics_workspace_id = data.azurerm_log_analytics_workspace.logws.0.id
290+
291+
dynamic "log" {
292+
for_each = var.nsg_diag_logs
293+
content {
294+
category = log.value
295+
enabled = true
296+
297+
retention_policy {
298+
enabled = false
299+
}
300+
}
301+
}
302+
}
303+

provider.tf

Lines changed: 0 additions & 8 deletions
This file was deleted.

0 commit comments

Comments
 (0)