Linter rule - admin user name shouldn't be literal

This rule finds when an admin user name is set to a literal value.

Linter rule code

Use the following value in the Bicep configuration file to customize rule settings:

adminusername-should-not-be-literal

Solution

Don't use a literal value or an expression that evaluates to a literal value. Instead, create a parameter for the user name and assign it to the admin user name.

The following example fails this test because the user name is a literal value.

resource vm 'Microsoft.Compute/virtualMachines@2023-03-01' = {
  name: 'name'
  location: location
  properties: {
    osProfile: {
      adminUsername: 'adminUsername'
    }
  }
}

The next example fails this test because the expression evaluates to a literal value when the default value is used.

var defaultAdmin = 'administrator'
resource vm 'Microsoft.Compute/virtualMachines@2023-03-01' = {
  name: 'name'
  location: location
  properties: {
    osProfile: {
      adminUsername: defaultAdmin
    }
  }
}

This example passes this test.

@secure()
param adminUsername string
param location string
resource vm 'Microsoft.Compute/virtualMachines@2023-03-01' = {
  name: 'name'
  location: location
  properties: {
    osProfile: {
      adminUsername: adminUsername
    }
  }
}

Next steps

For more information about the linter, see Use Bicep linter.