Microsoft.GuestConfiguration guestConfigurationAssignments 2018-11-20

Bicep-Ressourcendefinition

Der Ressourcentyp "guestConfigurationAssignments" kann mit Vorgängen bereitgestellt werden, die auf Folgendes abzielen:

Eine Liste der geänderten Eigenschaften in jeder API-Version finden Sie unter Änderungsprotokoll.

Ressourcenformat

Um eine Microsoft.GuestConfiguration/guestConfigurationAssignments-Ressource zu erstellen, fügen Sie der Vorlage den folgenden Bicep hinzu.

resource symbolicname 'Microsoft.GuestConfiguration/guestConfigurationAssignments@2018-11-20' = {
  scope: resourceSymbolicName or scope
  location: 'string'
  name: 'string'
  properties: {
    context: 'string'
    guestConfiguration: {
      assignmentType: 'string'
      configurationParameter: [
        {
          name: 'string'
          value: 'string'
        }
      ]
      configurationProtectedParameter: [
        {
          name: 'string'
          value: 'string'
        }
      ]
      configurationSetting: {
        actionAfterReboot: 'string'
        allowModuleOverwrite: bool
        configurationMode: 'string'
        configurationModeFrequencyMins: int
        rebootIfNeeded: bool
        refreshFrequencyMins: int
      }
      contentHash: 'string'
      contentUri: 'string'
      kind: 'string'
      name: 'string'
      version: 'string'
    }
    vmssVMList: [
      {}
    ]
  }
}

Eigenschaftswerte

Microsoft.GuestConfiguration/guestConfigurationAssignments

Name Beschreibung Wert
Ort Region, in der sich der virtuelle Computer befindet. Schnur
Name Der Ressourcenname Zeichenfolge (erforderlich)
Eigenschaften Eigenschaften der Gastkonfigurationszuweisung. GuestConfigurationAssignmentProperties
Umfang Verwenden Sie diese Verwendung beim Erstellen einer Ressource in einem Bereich, der sich von dem Bereitstellungsbereich unterscheidet. Legen Sie diese Eigenschaft auf den symbolischen Namen einer Ressource fest, um die Erweiterungsressourceanzuwenden.

KonfigurationsParameter

Name Beschreibung Wert
Name Name des Konfigurationsparameters. Schnur
Wert Wert des Konfigurationsparameters. Schnur

ConfigurationEinstellung

Name Beschreibung Wert
actionNachdem Neustart Gibt an, was nach einem Neustart während der Anwendung einer Konfiguration passiert. Mögliche Werte sind ContinueConfiguration und StopConfiguration 'ContinueConfiguration'
"StopConfiguration"
allowModuleÜberschreiben Wenn "true" – neue Konfigurationen, die vom Pulldienst heruntergeladen wurden, dürfen die alten Konfigurationen auf dem Zielknoten überschrieben werden. Andernfalls "false" Bool
configurationMode (Konfiguration) Gibt an, wie der LCM(Local Configuration Manager) die Konfiguration tatsächlich auf die Zielknoten anwendet. Mögliche Werte sind ApplyOnly, ApplyAndMonitor und ApplyAndAutoCorrect. 'AnwendenUndAutokorrigieren'
'AnwendenUndÜberwachen'
"ApplyOnly"
configurationModeFrequencyMins Wie oft in Minuten die aktuelle Konfiguration überprüft und angewendet wird. Diese Eigenschaft wird ignoriert, wenn die ConfigurationMode-Eigenschaft auf ApplyOnly festgelegt ist. Der Standardwert ist 15. Int
rebootIfNeed Legen Sie diesen Wert auf "true" fest, um den Knoten automatisch neu zu starten, nachdem eine Konfiguration angewendet wurde, für die ein Neustart erforderlich ist. Andernfalls müssen Sie den Knoten für jede konfiguration, für die er erforderlich ist, manuell neu starten. Der Standardwert ist "false". Wenn Sie diese Einstellung verwenden möchten, wenn eine Neustartbedingung von einem anderen Element als DSC (z. B. Windows Installer) ausgeführt wird, kombinieren Sie diese Einstellung mit dem xPendingReboot-Modul. Bool
refreshFrequencyMins Das Zeitintervall in Minuten, in dem das LCM einen Pulldienst überprüft, um aktualisierte Konfigurationen abzurufen. Dieser Wert wird ignoriert, wenn der LCM nicht im Pullmodus konfiguriert ist. Der Standardwert ist 30. Int

GuestConfigurationAssignmentProperties

Name Beschreibung Wert
Zusammenhang Die Quelle, die die Gastkonfigurationszuweisung initiiert hat. Beispiel: Azure-Richtlinie Schnur
guestConfiguration Die zuzuweisende Gastkonfiguration. GastkonfigurationNavigation
vmssVMList Die Liste der VM-Compliancedaten für VMSS VmssvmInfo[]

GastkonfigurationNavigation

Name Beschreibung Wert
Art der Zuweisung Gibt den Zuordnungstyp und die Ausführung der Konfiguration an. Mögliche Werte sind Audit, DeployAndAutoCorrect, ApplyAndAutoCorrect und ApplyAndMonitor. 'AnwendenUndAutokorrigieren'
'AnwendenUndÜberwachen'
"Überwachung"
'DeployAndAutoCorrect'
KonfigurationsParameter Die Konfigurationsparameter für die Gastkonfiguration. ConfigurationParameter-[]
configurationProtectedParameter Die geschützten Konfigurationsparameter für die Gastkonfiguration. ConfigurationParameter-[]
KonfigurationEinstellung Die Konfigurationseinstellung für die Gastkonfiguration. ConfigurationSetting-
contentHash Kombinierter Hash des Gastkonfigurationspakets und der Konfigurationsparameter. Schnur
contentUri URI des Speichers, in den das Gastkonfigurationspaket hochgeladen wird. Schnur
Art Art der Gastkonfiguration. Beispiel:DSC "DSC"
Name Name der Gastkonfiguration. Schnur
Version Version der Gastkonfiguration. Schnur

VmssvmInfo

Name Beschreibung Wert

Verwendungsbeispiele

Bicep-Beispiele

Ein grundlegendes Beispiel für die Bereitstellung von Wendet eine Gastkonfigurationsrichtlinie auf einen virtuellen Computer an.

param resourceName string = 'acctest0001'
param location string = 'westeurope'
@secure()
@description('The administrator password for the virtual machine')
param adminPassword string

resource guestConfigurationAssignment 'Microsoft.GuestConfiguration/guestConfigurationAssignments@2020-06-25' = {
  scope: virtualMachine
  name: 'WhitelistedApplication'
  location: location
  properties: {
    guestConfiguration: {
      assignmentType: ''
      configurationParameter: [
        {
          name: '[InstalledApplication]bwhitelistedapp;Name'
          value: 'NotePad,sql'
        }
      ]
      contentHash: ''
      contentUri: ''
      name: 'WhitelistedApplication'
      version: '1.*'
    }
  }
}

resource networkInterface 'Microsoft.Network/networkInterfaces@2022-07-01' = {
  name: resourceName
  location: location
  properties: {
    enableAcceleratedNetworking: false
    enableIPForwarding: false
    ipConfigurations: [
      {
        name: 'internal'
        properties: {
          primary: true
          privateIPAddressVersion: 'IPv4'
          privateIPAllocationMethod: 'Dynamic'
          subnet: {
            id: subnet.id
          }
        }
      }
    ]
  }
}

resource virtualMachine 'Microsoft.Compute/virtualMachines@2023-03-01' = {
  name: resourceName
  location: location
  properties: {
    additionalCapabilities: {}
    applicationProfile: {
      galleryApplications: []
    }
    diagnosticsProfile: {
      bootDiagnostics: {
        enabled: false
        storageUri: ''
      }
    }
    extensionsTimeBudget: 'PT1H30M'
    hardwareProfile: {
      vmSize: 'Standard_F2'
    }
    networkProfile: {
      networkInterfaces: [
        {
          id: networkInterface.id
          properties: {
            primary: true
          }
        }
      ]
    }
    osProfile: {
      adminPassword: null
      adminUsername: 'adminuser'
      allowExtensionOperations: true
      computerName: 'acctestvmdro23'
      secrets: []
      windowsConfiguration: {
        enableAutomaticUpdates: true
        patchSettings: {
          assessmentMode: 'ImageDefault'
          enableHotpatching: false
          patchMode: 'AutomaticByOS'
        }
        provisionVMAgent: true
        winRM: {
          listeners: []
        }
      }
    }
    priority: 'Regular'
    storageProfile: {
      dataDisks: []
      imageReference: {
        offer: 'WindowsServer'
        publisher: 'MicrosoftWindowsServer'
        sku: '2016-Datacenter'
        version: 'latest'
      }
      osDisk: {
        caching: 'ReadWrite'
        createOption: 'FromImage'
        managedDisk: {
          storageAccountType: 'Standard_LRS'
        }
        osType: 'Windows'
        writeAcceleratorEnabled: false
      }
    }
  }
}

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2022-07-01' = {
  name: resourceName
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    dhcpOptions: {
      dnsServers: []
    }
    subnets: []
  }
}

resource subnet 'Microsoft.Network/virtualNetworks/subnets@2022-07-01' = {
  parent: virtualNetwork
  name: 'internal'
  properties: {
    addressPrefix: '10.0.2.0/24'
    delegations: []
    privateEndpointNetworkPolicies: 'Enabled'
    privateLinkServiceNetworkPolicies: 'Enabled'
    serviceEndpointPolicies: []
    serviceEndpoints: []
  }
}

Azure-Schnellstartbeispiele

Die folgenden Azure-Schnellstartvorlagen Bicep-Beispiele für die Bereitstellung dieses Ressourcentyps enthalten.

Bicep-Datei Beschreibung
IIS-VMs & SQL Server 2014-VM- Erstellen Sie 1 oder 2 IIS Windows 2012 R2-Webserver und ein Back-End SQL Server 2014 in VNET.
Windows-VM mit azure secure baseline Die Vorlage erstellt einen virtuellen Computer mit Windows Server in einem neuen virtuellen Netzwerk mit einer öffentlichen IP-Adresse. Sobald der Computer bereitgestellt wurde, wird die Gastkonfigurationserweiterung installiert, und die azure secure baseline für Windows Server wird angewendet. Wenn sich die Konfiguration der Computer bewegt, können Sie die Einstellungen erneut anwenden, indem Sie die Vorlage erneut bereitstellen.

ARM-Vorlagenressourcendefinition

Der Ressourcentyp "guestConfigurationAssignments" kann mit Vorgängen bereitgestellt werden, die auf Folgendes abzielen:

Eine Liste der geänderten Eigenschaften in jeder API-Version finden Sie unter Änderungsprotokoll.

Ressourcenformat

Um eine Microsoft.GuestConfiguration/guestConfigurationAssignments-Ressource zu erstellen, fügen Sie Der Vorlage den folgenden JSON-Code hinzu.

{
  "type": "Microsoft.GuestConfiguration/guestConfigurationAssignments",
  "apiVersion": "2018-11-20",
  "name": "string",
  "location": "string",
  "properties": {
    "context": "string",
    "guestConfiguration": {
      "assignmentType": "string",
      "configurationParameter": [
        {
          "name": "string",
          "value": "string"
        }
      ],
      "configurationProtectedParameter": [
        {
          "name": "string",
          "value": "string"
        }
      ],
      "configurationSetting": {
        "actionAfterReboot": "string",
        "allowModuleOverwrite": "bool",
        "configurationMode": "string",
        "configurationModeFrequencyMins": "int",
        "rebootIfNeeded": "bool",
        "refreshFrequencyMins": "int"
      },
      "contentHash": "string",
      "contentUri": "string",
      "kind": "string",
      "name": "string",
      "version": "string"
    },
    "vmssVMList": [
      {
      }
    ]
  }
}

Eigenschaftswerte

Microsoft.GuestConfiguration/guestConfigurationAssignments

Name Beschreibung Wert
apiVersion (Englisch) Die API-Version '2018-11-20'
Ort Region, in der sich der virtuelle Computer befindet. Schnur
Name Der Ressourcenname Zeichenfolge (erforderlich)
Eigenschaften Eigenschaften der Gastkonfigurationszuweisung. GuestConfigurationAssignmentProperties
Art Der Ressourcentyp 'Microsoft.GuestConfiguration/guestConfigurationAssignments'

KonfigurationsParameter

Name Beschreibung Wert
Name Name des Konfigurationsparameters. Schnur
Wert Wert des Konfigurationsparameters. Schnur

ConfigurationEinstellung

Name Beschreibung Wert
actionNachdem Neustart Gibt an, was nach einem Neustart während der Anwendung einer Konfiguration passiert. Mögliche Werte sind ContinueConfiguration und StopConfiguration 'ContinueConfiguration'
"StopConfiguration"
allowModuleÜberschreiben Wenn "true" – neue Konfigurationen, die vom Pulldienst heruntergeladen wurden, dürfen die alten Konfigurationen auf dem Zielknoten überschrieben werden. Andernfalls "false" Bool
configurationMode (Konfiguration) Gibt an, wie der LCM(Local Configuration Manager) die Konfiguration tatsächlich auf die Zielknoten anwendet. Mögliche Werte sind ApplyOnly, ApplyAndMonitor und ApplyAndAutoCorrect. 'AnwendenUndAutokorrigieren'
'AnwendenUndÜberwachen'
"ApplyOnly"
configurationModeFrequencyMins Wie oft in Minuten die aktuelle Konfiguration überprüft und angewendet wird. Diese Eigenschaft wird ignoriert, wenn die ConfigurationMode-Eigenschaft auf ApplyOnly festgelegt ist. Der Standardwert ist 15. Int
rebootIfNeed Legen Sie diesen Wert auf "true" fest, um den Knoten automatisch neu zu starten, nachdem eine Konfiguration angewendet wurde, für die ein Neustart erforderlich ist. Andernfalls müssen Sie den Knoten für jede konfiguration, für die er erforderlich ist, manuell neu starten. Der Standardwert ist "false". Wenn Sie diese Einstellung verwenden möchten, wenn eine Neustartbedingung von einem anderen Element als DSC (z. B. Windows Installer) ausgeführt wird, kombinieren Sie diese Einstellung mit dem xPendingReboot-Modul. Bool
refreshFrequencyMins Das Zeitintervall in Minuten, in dem das LCM einen Pulldienst überprüft, um aktualisierte Konfigurationen abzurufen. Dieser Wert wird ignoriert, wenn der LCM nicht im Pullmodus konfiguriert ist. Der Standardwert ist 30. Int

GuestConfigurationAssignmentProperties

Name Beschreibung Wert
Zusammenhang Die Quelle, die die Gastkonfigurationszuweisung initiiert hat. Beispiel: Azure-Richtlinie Schnur
guestConfiguration Die zuzuweisende Gastkonfiguration. GastkonfigurationNavigation
vmssVMList Die Liste der VM-Compliancedaten für VMSS VmssvmInfo[]

GastkonfigurationNavigation

Name Beschreibung Wert
Art der Zuweisung Gibt den Zuordnungstyp und die Ausführung der Konfiguration an. Mögliche Werte sind Audit, DeployAndAutoCorrect, ApplyAndAutoCorrect und ApplyAndMonitor. 'AnwendenUndAutokorrigieren'
'AnwendenUndÜberwachen'
"Überwachung"
'DeployAndAutoCorrect'
KonfigurationsParameter Die Konfigurationsparameter für die Gastkonfiguration. ConfigurationParameter-[]
configurationProtectedParameter Die geschützten Konfigurationsparameter für die Gastkonfiguration. ConfigurationParameter-[]
KonfigurationEinstellung Die Konfigurationseinstellung für die Gastkonfiguration. ConfigurationSetting-
contentHash Kombinierter Hash des Gastkonfigurationspakets und der Konfigurationsparameter. Schnur
contentUri URI des Speichers, in den das Gastkonfigurationspaket hochgeladen wird. Schnur
Art Art der Gastkonfiguration. Beispiel:DSC "DSC"
Name Name der Gastkonfiguration. Schnur
Version Version der Gastkonfiguration. Schnur

VmssvmInfo

Name Beschreibung Wert

Verwendungsbeispiele

Azure-Schnellstartvorlagen

Die folgenden Azure-Schnellstartvorlagen diesen Ressourcentyp bereitstellen.

Schablone Beschreibung
IIS-VMs & SQL Server 2014-VM-

Bereitstellen in Azure
Erstellen Sie 1 oder 2 IIS Windows 2012 R2-Webserver und ein Back-End SQL Server 2014 in VNET.
Windows-VM mit azure secure baseline

Bereitstellen in Azure
Die Vorlage erstellt einen virtuellen Computer mit Windows Server in einem neuen virtuellen Netzwerk mit einer öffentlichen IP-Adresse. Sobald der Computer bereitgestellt wurde, wird die Gastkonfigurationserweiterung installiert, und die azure secure baseline für Windows Server wird angewendet. Wenn sich die Konfiguration der Computer bewegt, können Sie die Einstellungen erneut anwenden, indem Sie die Vorlage erneut bereitstellen.

Terraform -Ressourcendefinition (AzAPI-Anbieter)

Der Ressourcentyp "guestConfigurationAssignments" kann mit Vorgängen bereitgestellt werden, die auf Folgendes abzielen:

Eine Liste der geänderten Eigenschaften in jeder API-Version finden Sie unter Änderungsprotokoll.

Ressourcenformat

Um eine Microsoft.GuestConfiguration/guestConfigurationAssignments-Ressource zu erstellen, fügen Sie Ihrer Vorlage die folgende Terraform hinzu.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.GuestConfiguration/guestConfigurationAssignments@2018-11-20"
  name = "string"
  parent_id = "string"
  location = "string"
  body = {
    properties = {
      context = "string"
      guestConfiguration = {
        assignmentType = "string"
        configurationParameter = [
          {
            name = "string"
            value = "string"
          }
        ]
        configurationProtectedParameter = [
          {
            name = "string"
            value = "string"
          }
        ]
        configurationSetting = {
          actionAfterReboot = "string"
          allowModuleOverwrite = bool
          configurationMode = "string"
          configurationModeFrequencyMins = int
          rebootIfNeeded = bool
          refreshFrequencyMins = int
        }
        contentHash = "string"
        contentUri = "string"
        kind = "string"
        name = "string"
        version = "string"
      }
      vmssVMList = [
        {
        }
      ]
    }
  }
}

Eigenschaftswerte

Microsoft.GuestConfiguration/guestConfigurationAssignments

Name Beschreibung Wert
Ort Region, in der sich der virtuelle Computer befindet. Schnur
Name Der Ressourcenname Zeichenfolge (erforderlich)
Eltern-ID Die ID der Ressource, auf die diese Erweiterungsressource angewendet werden soll. Zeichenfolge (erforderlich)
Eigenschaften Eigenschaften der Gastkonfigurationszuweisung. GuestConfigurationAssignmentProperties
Art Der Ressourcentyp "Microsoft.GuestConfiguration/guestConfigurationAssignments@2018-11-20"

KonfigurationsParameter

Name Beschreibung Wert
Name Name des Konfigurationsparameters. Schnur
Wert Wert des Konfigurationsparameters. Schnur

ConfigurationEinstellung

Name Beschreibung Wert
actionNachdem Neustart Gibt an, was nach einem Neustart während der Anwendung einer Konfiguration passiert. Mögliche Werte sind ContinueConfiguration und StopConfiguration 'ContinueConfiguration'
"StopConfiguration"
allowModuleÜberschreiben Wenn "true" – neue Konfigurationen, die vom Pulldienst heruntergeladen wurden, dürfen die alten Konfigurationen auf dem Zielknoten überschrieben werden. Andernfalls "false" Bool
configurationMode (Konfiguration) Gibt an, wie der LCM(Local Configuration Manager) die Konfiguration tatsächlich auf die Zielknoten anwendet. Mögliche Werte sind ApplyOnly, ApplyAndMonitor und ApplyAndAutoCorrect. 'AnwendenUndAutokorrigieren'
'AnwendenUndÜberwachen'
"ApplyOnly"
configurationModeFrequencyMins Wie oft in Minuten die aktuelle Konfiguration überprüft und angewendet wird. Diese Eigenschaft wird ignoriert, wenn die ConfigurationMode-Eigenschaft auf ApplyOnly festgelegt ist. Der Standardwert ist 15. Int
rebootIfNeed Legen Sie diesen Wert auf "true" fest, um den Knoten automatisch neu zu starten, nachdem eine Konfiguration angewendet wurde, für die ein Neustart erforderlich ist. Andernfalls müssen Sie den Knoten für jede konfiguration, für die er erforderlich ist, manuell neu starten. Der Standardwert ist "false". Wenn Sie diese Einstellung verwenden möchten, wenn eine Neustartbedingung von einem anderen Element als DSC (z. B. Windows Installer) ausgeführt wird, kombinieren Sie diese Einstellung mit dem xPendingReboot-Modul. Bool
refreshFrequencyMins Das Zeitintervall in Minuten, in dem das LCM einen Pulldienst überprüft, um aktualisierte Konfigurationen abzurufen. Dieser Wert wird ignoriert, wenn der LCM nicht im Pullmodus konfiguriert ist. Der Standardwert ist 30. Int

GuestConfigurationAssignmentProperties

Name Beschreibung Wert
Zusammenhang Die Quelle, die die Gastkonfigurationszuweisung initiiert hat. Beispiel: Azure-Richtlinie Schnur
guestConfiguration Die zuzuweisende Gastkonfiguration. GastkonfigurationNavigation
vmssVMList Die Liste der VM-Compliancedaten für VMSS VmssvmInfo[]

GastkonfigurationNavigation

Name Beschreibung Wert
Art der Zuweisung Gibt den Zuordnungstyp und die Ausführung der Konfiguration an. Mögliche Werte sind Audit, DeployAndAutoCorrect, ApplyAndAutoCorrect und ApplyAndMonitor. 'AnwendenUndAutokorrigieren'
'AnwendenUndÜberwachen'
"Überwachung"
'DeployAndAutoCorrect'
KonfigurationsParameter Die Konfigurationsparameter für die Gastkonfiguration. ConfigurationParameter-[]
configurationProtectedParameter Die geschützten Konfigurationsparameter für die Gastkonfiguration. ConfigurationParameter-[]
KonfigurationEinstellung Die Konfigurationseinstellung für die Gastkonfiguration. ConfigurationSetting-
contentHash Kombinierter Hash des Gastkonfigurationspakets und der Konfigurationsparameter. Schnur
contentUri URI des Speichers, in den das Gastkonfigurationspaket hochgeladen wird. Schnur
Art Art der Gastkonfiguration. Beispiel:DSC "DSC"
Name Name der Gastkonfiguration. Schnur
Version Version der Gastkonfiguration. Schnur

VmssvmInfo

Name Beschreibung Wert

Verwendungsbeispiele

Terraform-Beispiele

Ein grundlegendes Beispiel für die Bereitstellung von Wendet eine Gastkonfigurationsrichtlinie auf einen virtuellen Computer an.

terraform {
  required_providers {
    azapi = {
      source = "Azure/azapi"
    }
  }
}

provider "azapi" {
  skip_provider_registration = false
}

variable "resource_name" {
  type    = string
  default = "acctest0001"
}

variable "location" {
  type    = string
  default = "westeurope"
}

variable "admin_password" {
  type        = string
  description = "The administrator password for the virtual machine"
  sensitive   = true
}

resource "azapi_resource" "resourceGroup" {
  type     = "Microsoft.Resources/resourceGroups@2020-06-01"
  name     = var.resource_name
  location = var.location
}

resource "azapi_resource" "virtualNetwork" {
  type      = "Microsoft.Network/virtualNetworks@2022-07-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = var.resource_name
  location  = var.location
  body = {
    properties = {
      addressSpace = {
        addressPrefixes = [
          "10.0.0.0/16",
        ]
      }
      dhcpOptions = {
        dnsServers = [
        ]
      }
      subnets = [
      ]
    }
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
  lifecycle {
    ignore_changes = [body.properties.subnets]
  }
}

resource "azapi_resource" "subnet" {
  type      = "Microsoft.Network/virtualNetworks/subnets@2022-07-01"
  parent_id = azapi_resource.virtualNetwork.id
  name      = "internal"
  body = {
    properties = {
      addressPrefix = "10.0.2.0/24"
      delegations = [
      ]
      privateEndpointNetworkPolicies    = "Enabled"
      privateLinkServiceNetworkPolicies = "Enabled"
      serviceEndpointPolicies = [
      ]
      serviceEndpoints = [
      ]
    }
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
}

resource "azapi_resource" "networkInterface" {
  type      = "Microsoft.Network/networkInterfaces@2022-07-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = var.resource_name
  location  = var.location
  body = {
    properties = {
      enableAcceleratedNetworking = false
      enableIPForwarding          = false
      ipConfigurations = [
        {
          name = "internal"
          properties = {
            primary                   = true
            privateIPAddressVersion   = "IPv4"
            privateIPAllocationMethod = "Dynamic"
            subnet = {
              id = azapi_resource.subnet.id
            }
          }
        },
      ]
    }
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
}

resource "azapi_resource" "virtualMachine" {
  type      = "Microsoft.Compute/virtualMachines@2023-03-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = var.resource_name
  location  = var.location
  body = {
    properties = {
      additionalCapabilities = {
      }
      applicationProfile = {
        galleryApplications = [
        ]
      }
      diagnosticsProfile = {
        bootDiagnostics = {
          enabled    = false
          storageUri = ""
        }
      }
      extensionsTimeBudget = "PT1H30M"
      hardwareProfile = {
        vmSize = "Standard_F2"
      }
      networkProfile = {
        networkInterfaces = [
          {
            id = azapi_resource.networkInterface.id
            properties = {
              primary = true
            }
          },
        ]
      }
      osProfile = {
        adminPassword            = var.admin_password
        adminUsername            = "adminuser"
        allowExtensionOperations = true
        computerName             = "acctestvmdro23"
        secrets = [
        ]
        windowsConfiguration = {
          enableAutomaticUpdates = true
          patchSettings = {
            assessmentMode    = "ImageDefault"
            enableHotpatching = false
            patchMode         = "AutomaticByOS"
          }
          provisionVMAgent = true
          winRM = {
            listeners = [
            ]
          }
        }
      }
      priority = "Regular"
      storageProfile = {
        dataDisks = [
        ]
        imageReference = {
          offer     = "WindowsServer"
          publisher = "MicrosoftWindowsServer"
          sku       = "2016-Datacenter"
          version   = "latest"
        }
        osDisk = {
          caching      = "ReadWrite"
          createOption = "FromImage"
          managedDisk = {
            storageAccountType = "Standard_LRS"
          }
          osType                  = "Windows"
          writeAcceleratorEnabled = false
        }
      }
    }
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
}

resource "azapi_resource" "guestConfigurationAssignment" {
  type      = "Microsoft.GuestConfiguration/guestConfigurationAssignments@2020-06-25"
  parent_id = azapi_resource.virtualMachine.id
  name      = "WhitelistedApplication"
  location  = var.location
  body = {
    properties = {
      guestConfiguration = {
        assignmentType = ""
        configurationParameter = [
          {
            name  = "[InstalledApplication]bwhitelistedapp;Name"
            value = "NotePad,sql"
          },
        ]
        contentHash = ""
        contentUri  = ""
        name        = "WhitelistedApplication"
        version     = "1.*"
      }
    }
  }
  schema_validation_enabled = false
  response_export_values    = ["*"]
}