-
Notifications
You must be signed in to change notification settings - Fork 1
/
main.bicep
155 lines (143 loc) · 3.46 KB
/
main.bicep
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
param virtualMachineSize string
param adminUsername string
@secure()
param adminPassword string
param storageAccountType string
param location string = resourceGroup().location
var nic1Name = 'nic-1'
var nic2Name = 'nic-2'
var virtualNetworkName = 'virtualNetwork'
var subnet1Name = 'subnet-1'
var subnet2Name = 'subnet-2'
var publicIPAddressName = 'publicIp'
var diagStorageAccountName = concat('diags', uniqueString(resourceGroup().id))
var networkSecurityGroupName = 'NSG'
var networkSecurityGroupName2 = concat(subnet2Name, '-nsg')
module vmMod './vm.bicep' = {
name: 'vmMod'
params: {
adminUsername: adminUsername
adminPassword: adminPassword
virtualMachineSize: virtualMachineSize
virtualMachineName: 'VM-MultiNic'
nic1Id: nic1.id
nic2Id: nic2.id
diagsStorageUri: diagsAccount.properties.primaryEndpoints.blob
}
}
resource diagsAccount 'Microsoft.Storage/storageAccounts@2017-06-01' = {
name: diagStorageAccountName
location: location
sku: {
name: storageAccountType
}
kind: 'Storage'
}
// Simple Network Security Group for subnet2
resource nsg2 'Microsoft.Network/networkSecurityGroups@2019-08-01' = {
name: networkSecurityGroupName2
location: location
properties: {}
}
// This will build a Virtual Network.
resource vnet 'Microsoft.Network/virtualNetworks@2017-06-01' = {
name: virtualNetworkName
location: location
properties: {
addressSpace: {
addressPrefixes: [
'10.0.0.0/16'
]
}
subnets: [
{
name: subnet1Name
properties: {
addressPrefix: '10.0.0.0/24'
}
}
{
name: subnet2Name
properties: {
addressPrefix: '10.0.1.0/24'
networkSecurityGroup: {
id: nsg2.id
}
}
}
]
}
}
// This will be your Primary NIC
resource nic1 'Microsoft.Network/networkInterfaces@2017-06-01' = {
name: nic1Name
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig1'
properties: {
subnet: {
id: '${vnet.id}/subnets/${subnet1Name}'
}
privateIPAllocationMethod: 'Dynamic'
publicIPAddress: {
id: pip.id
}
}
}
]
networkSecurityGroup: {
id: nsg.id
}
}
}
// This will be your Secondary NIC
resource nic2 'Microsoft.Network/networkInterfaces@2017-06-01' = {
name: nic2Name
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig1'
properties: {
subnet: {
id: '${vnet.id}/subnets/${subnet2Name}'
}
privateIPAllocationMethod: 'Dynamic'
}
}
]
}
}
// Public IP for your Primary NIC
resource pip 'Microsoft.Network/publicIPAddresses@2017-06-01' = {
name: publicIPAddressName
location: location
properties: {
publicIPAllocationMethod: 'Dynamic'
}
}
// Network Security Group (NSG) for your Primary NIC
resource nsg 'Microsoft.Network/networkSecurityGroups@2016-09-01' = {
name: networkSecurityGroupName
location: location
properties: {
securityRules: [
{
name: 'default-allow-rdp'
properties: {
priority: 1000
sourceAddressPrefix: '*'
protocol: 'Tcp'
destinationPortRange: '3389'
access: 'Allow'
direction: 'Inbound'
sourcePortRange: '*'
destinationAddressPrefix: '*'
}
}
]
}
}
output publicIp string = pip.properties.ipAddress