workloads/wordpress-vm/wordpress-vm.ps1 (42 lines of code) (raw):

# Define variables $resourceGroupName = "myResourceGroup" $location = "eastus" $vmName = "myVM" $vmSize = "Standard_DS2_v2" $adminUsername = "adminUser" $adminPassword = "adminPassword" # Create a new resource group New-AzResourceGroup -Name $resourceGroupName -Location $location # Create a new virtual network $vnet = New-AzVirtualNetwork -ResourceGroupName $resourceGroupName -Location $location -Name "myVNet" -AddressPrefix "10.0.0.0/16" # Create a new subnet $subnet = Add-AzVirtualNetworkSubnetConfig -Name "mySubnet" -AddressPrefix "10.0.0.0/24" -VirtualNetwork $vnet # Create a new public IP address $publicIP = New-AzPublicIpAddress -ResourceGroupName $resourceGroupName -Location $location -Name "myPublicIP" -AllocationMethod Dynamic # Create a new network security group $nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroupName -Location $location -Name "myNSG" # Create a new virtual network interface $nic = New-AzNetworkInterface -ResourceGroupName $resourceGroupName -Location $location -Name "myNIC" -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $publicIP.Id -NetworkSecurityGroupId $nsg.Id # Create a new virtual machine $vmConfig = New-AzVMConfig -VMName $vmName -VMSize $vmSize $vmConfig = Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential (Get-Credential -UserName $adminUsername -Password $adminPassword) $vmConfig = Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id $vmConfig = Set-AzVMSourceImage -VM $vmConfig -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer" -Skus "2019-Datacenter" -Version "latest" $vm = New-AzVM -ResourceGroupName $resourceGroupName -Location $location -VM $vmConfig # Output the public IP address of the VM $vm.PublicIpAddress # Install WordPress Invoke-Command -ComputerName $vm.PublicIpAddress -ScriptBlock { # Download and install WordPress Invoke-WebRequest -Uri "https://wordpress.org/latest.zip" -OutFile "C:\inetpub\wwwroot\wordpress.zip" Expand-Archive -Path "C:\inetpub\wwwroot\wordpress.zip" -DestinationPath "C:\inetpub\wwwroot" Rename-Item -Path "C:\inetpub\wwwroot\wordpress" -NewName "wordpress" # Configure WordPress $wpConfigPath = "C:\inetpub\wwwroot\wordpress\wp-config.php" $wpConfig = Get-Content -Path $wpConfigPath $wpConfig = $wpConfig -replace "database_name_here", "wordpress" $wpConfig = $wpConfig -replace "username_here", "db_user" $wpConfig = $wpConfig -replace "password_here", "db_password" $wpConfig = $wpConfig -replace "localhost", "db_host" $wpConfig | Set-Content -Path $wpConfigPath }