Bicep: Deploy Standalone RHEL8.4 and VNET/Subnet with Public IP address and NSG attached to it
param location string = resourceGroup().location
param vmName string = 'rhel84-vm'
param adminUsername string
@secure()
param adminPassword string
param vmSize string = 'Standard_D2s_v3'
resource networkSecurityGroup 'Microsoft.Network/networkSecurityGroups@2021-02-01' = {
name: '${vmName}-nsg'
location: location
properties: {
securityRules: [
{
name: 'AllowSSH'
properties: {
priority: 100
protocol: 'Tcp'
access: 'Allow'
direction: 'Inbound'
sourceAddressPrefix: '*'
sourcePortRange: '*'
destinationAddressPrefix: '*'
destinationPortRange: '22'
}
}
]
}
}
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2021-02-01' = {
name: '${vmName}-vnet'
location: location
properties: {
addressSpace: {
addressPrefixes: [
'10.0.0.0/16'
]
}
subnets: [
{
name: 'default'
properties: {
addressPrefix: '10.0.1.0/24'
networkSecurityGroup: {
id: networkSecurityGroup.id
}
}
}
]
}
}
resource publicIpAddress 'Microsoft.Network/publicIPAddresses@2021-02-01' = {
name: '${vmName}-pip'
location: location
properties: {
publicIPAllocationMethod: 'Dynamic'
}
}
resource networkInterface 'Microsoft.Network/networkInterfaces@2021-02-01' = {
name: '${vmName}-nic'
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig1'
properties: {
privateIPAllocationMethod: 'Dynamic'
publicIPAddress: {
id: publicIpAddress.id
}
subnet: {
id: resourceId('Microsoft.Network/virtualNetworks/subnets', virtualNetwork.name, 'default')
}
}
}
]
}
}
resource virtualMachine 'Microsoft.Compute/virtualMachines@2021-07-01' = {
name: vmName
location: location
properties: {
hardwareProfile: {
vmSize: vmSize
}
storageProfile: {
imageReference: {
publisher: 'RedHat'
offer: 'RHEL'
sku: '8_4'
version: 'latest'
}
osDisk: {
createOption: 'FromImage'
managedDisk: {
storageAccountType: 'Premium_LRS'
}
}
}
osProfile: {
computerName: vmName
adminUsername: adminUsername
adminPassword: adminPassword
linuxConfiguration: {
disablePasswordAuthentication: false
}
}
networkProfile: {
networkInterfaces: [
{
id: networkInterface.id
}
]
}
}
}