Skip to content

Commit

Permalink
added availability set check and warning message (#120)
Browse files Browse the repository at this point in the history
* added availability set check and warning message

* improve test scenario deployments
  • Loading branch information
mbrat2005 authored May 13, 2024
1 parent 77be7cb commit 51536e6
Show file tree
Hide file tree
Showing 8 changed files with 194 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
RootModule = 'AzureVMPublicIPUpgrade'

# Version number of this module.
ModuleVersion = '1.0.1'
ModuleVersion = '1.0.2'

# Supported PSEditions
# CompatiblePSEditions = @()
Expand Down Expand Up @@ -107,7 +107,7 @@ PrivateData = @{
# IconUri = ''

# ReleaseNotes of this module
# ReleaseNotes = ''
ReleaseNotes = 'Added AvailablitySet warning and skip'

# Prerelease string of this module
# Prerelease = ''
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,16 @@ Function Start-VMPublicIPUpgrade {
Add-LogEntry "VM '$($VM.Name)' is not associated with a load balancer."
}

# confirm VM is not a member of an Availability Set
Add-LogEntry "Checking that VM '$($VM.Name)' is not a member of an Availability Set..."
If ($VM.AvailabilitySetReference) {
Add-LogEntry "VM '$($VM.Name)' is a member of an Availability Set. Availability Sets cannot have VMs with different Public IP address SKUs, requiring all Public IPs to be upgraded at the same time, which this script does not support. Skipping upgrade..." WARNING
return
}
Else {
Add-LogEntry "VM '$($VM.Name)' is not a member of an Availability Set."
}

# confirm that each NIC with a public IP address associated has a Network Security Group
Add-LogEntry "Checking that VM '$($VM.Name)' has a Network Security Group associated with each NIC..."

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,17 @@ module nsg '../modules/Microsoft.Network/networkSecurityGroups/deploy.bicep' = {
name: 'nsg-01'
location: location
}
dependsOn: [
rg
]
}

module vm '../modules/Microsoft.Compute/virtualMachines_custom/deploy.bicep' = {
scope: resourceGroup(resourceGroupName)
name: 'vm-01'
params: {
adminUsername: 'admin-vm'
name: 'vm-01'
adminPassword: '${uniqueString(randomGuid)}rpP@340'
location: location
imageReference: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ module vm '../modules/Microsoft.Compute/virtualMachines_custom/deploy.bicep' = {
name: 'vm-01'
params: {
adminUsername: 'admin-vm'
name: 'vm-01'
adminPassword: '${uniqueString(randomGuid)}rpP@340'
location: location
imageReference: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,17 @@ module nsg '../modules/Microsoft.Network/networkSecurityGroups/deploy.bicep' = {
name: 'nsg-01'
location: location
}
dependsOn: [
rg
]
}

module vm '../modules/Microsoft.Compute/virtualMachines_custom/deploy.bicep' = {
scope: resourceGroup(resourceGroupName)
name: 'vm-01'
params: {
adminUsername: 'admin-vm'
name: 'vm-01'
adminPassword: '${uniqueString(randomGuid)}rpP@340'
location: location
imageReference: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,17 @@ module nsg '../modules/Microsoft.Network/networkSecurityGroups/deploy.bicep' = {
name: 'nsg-01'
location: location
}
dependsOn: [
rg
]
}

module vm '../modules/Microsoft.Compute/virtualMachines_custom/deploy.bicep' = {
scope: resourceGroup(resourceGroupName)
name: 'vm-01'
params: {
adminUsername: 'admin-vm'
name: 'vm-01'
adminPassword: '${uniqueString(randomGuid)}rpP@340'
location: location
imageReference: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,16 @@ module nsg '../modules/Microsoft.Network/networkSecurityGroups/deploy.bicep' = {
name: 'nsg-01'
location: location
}
dependsOn: [
rg
]
}

module vm '../modules/Microsoft.Compute/virtualMachines_custom/deploy.bicep' = {
scope: resourceGroup(resourceGroupName)
name: 'vm-01'
params: {
name: 'vm-01'
adminUsername: 'admin-vm'
adminPassword: '${uniqueString(randomGuid)}rpP@340'
location: location
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
targetScope = 'subscription'
param location string
param resourceGroupName string
param randomGuid string = newGuid()

// Resource Group
module rg '../modules/Microsoft.Resources/resourceGroups/deploy.bicep' = {
name: '${resourceGroupName}-${location}'
params: {
name: resourceGroupName
location: location
}
}

// vnet
module virtualNetworks '../modules/Microsoft.Network/virtualNetworks/deploy.bicep' = {
name: '${uniqueString(deployment().name)}-virtualNetworks'
scope: resourceGroup(resourceGroupName)
params: {
// Required parameters
location: location
addressPrefixes: [
'10.0.0.0/16'
]
name: 'vnet-01'
subnets: [
{
name: 'subnet-01'
addressPrefix: '10.0.1.0/24'
}
]
}
dependsOn: [
rg
]
}

module storageAccounts '../modules/Microsoft.Storage/storageAccounts/deploy.bicep' = {
name: 'bootdiag-storage-01'
scope: resourceGroup(resourceGroupName)
params: {
name: 'bootdiag${uniqueString(deployment().name)}'
location: location
storageAccountSku: 'Standard_LRS'
storageAccountKind: 'StorageV2'
supportsHttpsTrafficOnly: true
}
dependsOn: [
rg
]
}

module nsg '../modules/Microsoft.Network/networkSecurityGroups/deploy.bicep' = {
scope: resourceGroup(resourceGroupName)
name: 'nsg-01'
params: {
name: 'nsg-01'
location: location
}
}

module availabilitySets '../modules/Microsoft.Compute/availabilitySets/deploy.bicep' = {
scope: resourceGroup(resourceGroupName)
name: 'avset-01'
params: {
name: 'avset-01'
location: location
}
dependsOn: [
rg
]
}

module vm1 '../modules/Microsoft.Compute/virtualMachines_custom/deploy.bicep' = {
scope: resourceGroup(resourceGroupName)
name: 'vm-01'
params: {
adminUsername: 'admin-vm'
name: 'vm-01'
adminPassword: '${uniqueString(randomGuid)}rpP@340'
availabilitySetResourceId: availabilitySets.outputs.resourceId
location: location
imageReference: {
offer: 'UbuntuServer'
publisher: 'Canonical'
sku: '18.04-LTS'
version: 'latest'
}
nicConfigurations: [
{
location: location
ipConfigurations: [
{
name: 'ipconfig1'
subnetResourceId: virtualNetworks.outputs.subnetResourceIds[0]
loadBalancerBackendAddressPools: []
pipConfiguration: {
publicIpNameSuffix: '-pip-01'
}
skuName: 'Basic'
networkSecurityGroup: nsg.outputs.resourceId
}

]
nicSuffix: 'nic'
enableAcceleratedNetworking: false
}
]
osDisk: {
createOption: 'fromImage'
diskSizeGB: '128'
managedDisk: {
storageAccountType: 'Standard_LRS'
}
}
osType: 'Linux'
vmSize: 'Standard_DS1_v2'
}
}

module vm2 '../modules/Microsoft.Compute/virtualMachines_custom/deploy.bicep' = {
scope: resourceGroup(resourceGroupName)
name: 'vm-02'
params: {
name: 'vm-02'
adminUsername: 'admin-vm'
adminPassword: '${uniqueString(randomGuid)}rpP@340'
availabilitySetResourceId: availabilitySets.outputs.resourceId
location: location
imageReference: {
offer: 'UbuntuServer'
publisher: 'Canonical'
sku: '18.04-LTS'
version: 'latest'
}
nicConfigurations: [
{
location: location
ipConfigurations: [
{
name: 'ipconfig1'
subnetResourceId: virtualNetworks.outputs.subnetResourceIds[0]
loadBalancerBackendAddressPools: []
pipConfiguration: {
publicIpNameSuffix: '-pip-01'
}
skuName: 'Basic'
networkSecurityGroup: nsg.outputs.resourceId
}
]
nicSuffix: 'nic'
enableAcceleratedNetworking: false
}
]
osDisk: {
createOption: 'fromImage'
diskSizeGB: '128'
managedDisk: {
storageAccountType: 'Standard_LRS'
}
}
osType: 'Linux'
vmSize: 'Standard_DS1_v2'
}
}

0 comments on commit 51536e6

Please sign in to comment.