Virtual Machine Configuration Assignment
Applies a Guest Configuration Policy to a Virtual Machine.
NOTE: You can create Guest Configuration Policies without defining a
azure.compute.Extension
resource, however the policies will not be executed until aazure.compute.Extension
has been provisioned to the virtual machine.
Example Usage
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azure.core.ResourceGroup;
import com.pulumi.azure.core.ResourceGroupArgs;
import com.pulumi.azure.network.VirtualNetwork;
import com.pulumi.azure.network.VirtualNetworkArgs;
import com.pulumi.azure.network.Subnet;
import com.pulumi.azure.network.SubnetArgs;
import com.pulumi.azure.network.NetworkInterface;
import com.pulumi.azure.network.NetworkInterfaceArgs;
import com.pulumi.azure.network.inputs.NetworkInterfaceIpConfigurationArgs;
import com.pulumi.azure.compute.WindowsVirtualMachine;
import com.pulumi.azure.compute.WindowsVirtualMachineArgs;
import com.pulumi.azure.compute.inputs.WindowsVirtualMachineIdentityArgs;
import com.pulumi.azure.compute.inputs.WindowsVirtualMachineOsDiskArgs;
import com.pulumi.azure.compute.inputs.WindowsVirtualMachineSourceImageReferenceArgs;
import com.pulumi.azure.compute.Extension;
import com.pulumi.azure.compute.ExtensionArgs;
import com.pulumi.azure.policy.VirtualMachineConfigurationAssignment;
import com.pulumi.azure.policy.VirtualMachineConfigurationAssignmentArgs;
import com.pulumi.azure.policy.inputs.VirtualMachineConfigurationAssignmentConfigurationArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var exampleResourceGroup = new ResourceGroup("exampleResourceGroup", ResourceGroupArgs.builder()
.location("West Europe")
.build());
var exampleVirtualNetwork = new VirtualNetwork("exampleVirtualNetwork", VirtualNetworkArgs.builder()
.location(exampleResourceGroup.location())
.resourceGroupName(exampleResourceGroup.name())
.addressSpaces("10.0.0.0/16")
.build());
var exampleSubnet = new Subnet("exampleSubnet", SubnetArgs.builder()
.resourceGroupName(exampleResourceGroup.name())
.virtualNetworkName(exampleVirtualNetwork.name())
.addressPrefixes("10.0.2.0/24")
.build());
var exampleNetworkInterface = new NetworkInterface("exampleNetworkInterface", NetworkInterfaceArgs.builder()
.resourceGroupName(exampleResourceGroup.name())
.location(exampleResourceGroup.location())
.ipConfigurations(NetworkInterfaceIpConfigurationArgs.builder()
.name("internal")
.subnetId(exampleSubnet.id())
.privateIpAddressAllocation("Dynamic")
.build())
.build());
var exampleWindowsVirtualMachine = new WindowsVirtualMachine("exampleWindowsVirtualMachine", WindowsVirtualMachineArgs.builder()
.resourceGroupName(exampleResourceGroup.name())
.location(exampleResourceGroup.location())
.size("Standard_F2")
.adminUsername("adminuser")
.adminPassword("P@$$w0rd1234!")
.networkInterfaceIds(exampleNetworkInterface.id())
.identity(WindowsVirtualMachineIdentityArgs.builder()
.type("SystemAssigned")
.build())
.osDisk(WindowsVirtualMachineOsDiskArgs.builder()
.caching("ReadWrite")
.storageAccountType("Standard_LRS")
.build())
.sourceImageReference(WindowsVirtualMachineSourceImageReferenceArgs.builder()
.publisher("MicrosoftWindowsServer")
.offer("WindowsServer")
.sku("2019-Datacenter")
.version("latest")
.build())
.build());
var exampleExtension = new Extension("exampleExtension", ExtensionArgs.builder()
.virtualMachineId(exampleWindowsVirtualMachine.id())
.publisher("Microsoft.GuestConfiguration")
.type("ConfigurationforWindows")
.typeHandlerVersion("1.29")
.autoUpgradeMinorVersion("true")
.build());
var exampleVirtualMachineConfigurationAssignment = new VirtualMachineConfigurationAssignment("exampleVirtualMachineConfigurationAssignment", VirtualMachineConfigurationAssignmentArgs.builder()
.location(exampleWindowsVirtualMachine.location())
.virtualMachineId(exampleWindowsVirtualMachine.id())
.configuration(VirtualMachineConfigurationAssignmentConfigurationArgs.builder()
.assignmentType("ApplyAndMonitor")
.version("1.*")
.parameters(
VirtualMachineConfigurationAssignmentConfigurationParameterArgs.builder()
.name("Minimum Password Length;ExpectedValue")
.value("16")
.build(),
VirtualMachineConfigurationAssignmentConfigurationParameterArgs.builder()
.name("Minimum Password Age;ExpectedValue")
.value("0")
.build(),
VirtualMachineConfigurationAssignmentConfigurationParameterArgs.builder()
.name("Maximum Password Age;ExpectedValue")
.value("30,45")
.build(),
VirtualMachineConfigurationAssignmentConfigurationParameterArgs.builder()
.name("Enforce Password History;ExpectedValue")
.value("10")
.build(),
VirtualMachineConfigurationAssignmentConfigurationParameterArgs.builder()
.name("Password Must Meet Complexity Requirements;ExpectedValue")
.value("1")
.build())
.build())
.build());
}
}
Content copied to clipboard
Import
Policy Virtual Machine Configuration Assignments can be imported using the resource id
, e.g.
$ pulumi import azure:policy/virtualMachineConfigurationAssignment:VirtualMachineConfigurationAssignment example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Compute/virtualMachines/vm1/providers/Microsoft.GuestConfiguration/guestConfigurationAssignments/assignment1
Content copied to clipboard