Olá pessoal, tudo bem com vocês?
Nesse ultimo artigo iremos fazer o deploy de um ambiente completo via powershell. A intensão com essa seria de artigo, foi para auxiliar vocês na criação de cada recurso e depois de uma forma automatizada, ajudar na entrega de projetos ou iniciar projetos com powershell.
O que contém nesse script:
- Resource Group;
- Storage Account;
- File Share;
- Containers para Logs;
- Criação de Rede;
- Criação de Máquina Virtual;
- Criação Placa de rede;
- Criação do Network Security Group;
Agora vamos lá, fazer a mágica acontecer rsrsrsrsrs
Gravei um vídeo com o tempo de execução do script, para vocês terem um noção de como é simples e rápido a criação. Esse script é ideal em cenários de início de projeto, onde você já tem o seu escopo pronto.
Script:
#Configurando Resource Group $rgName= "RG_CloudShell" $locName= "East US 2" New-AzResourceGroup -Name $rgName -Location $locName -Tag @{Departmento="IT"} New-AzResourceGroup -Name "RG_CloudShell" -Location "East US 2" #Criação do Storage $rgName= "RG_CloudShell" $locName= "East US 2" $STRName= "strpwjatoba02" $TypeSTR= "Standard_LRS" New-AzStorageAccount -ResourceGroupName $rgName -Name $STRName -Type $TypeSTR -Location $locName #Criando um Container via Powershell $storageAccount = Get-AzStorageAccount -ResourceGroupName $rgName -Name $STRName $containerName = "logs" $ctx = $storageAccount.Context New-AzStorageContainer -Name $containerName -Context $ctx -Permission blob #Criando FileShare $storageAccount = Get-AzStorageAccount -ResourceGroupName "RG_CloudShell" -Name "strpwjatoba02" $storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageAccount.ResourceGroupName -Name $storageAccount.StorageAccountName | select -first 1).Value $storageContext = New-AzStorageContext -StorageAccountName $storageAccount.StorageAccountName -StorageAccountKey $storageKey New-AzureStorageShare -Name "jatobafileshare" -Context $storageContext #Criação de Rede New-AzVirtualNetwork -Name "VNet-001" -ResourceGroupName "RG_CloudShell" -Location "East US 2" -AddressPrefix 192.168.5.0/24 $VirtualNetwork = Get-AzVirtualNetwork -Name "VNet-001" -ResourceGroupName "RG_CloudShell" Add-AzVirtualNetworkSubnetConfig -Name BackEnd -VirtualNetwork $VirtualNetwork -AddressPrefix 192.168.5.0/26 Add-AzVirtualNetworkSubnetConfig -Name FrontEnd -VirtualNetwork $VirtualNetwork -AddressPrefix 192.168.5.64/26 Add-AzVirtualNetworkSubnetConfig -Name DMZ -VirtualNetwork $VirtualNetwork -AddressPrefix 192.168.5.128/28 Add-AzVirtualNetworkSubnetConfig -Name GatewaySubnet -VirtualNetwork $VirtualNetwork -AddressPrefix 192.168.5.144/28 Set-AzVirtualNetwork -VirtualNetwork $VirtualNetwork #Criação de VM # Definir valores para recurso existente nomes de conta de grupo e armazenamento. $rgName="RG_CloudShell $locName="East US 2" $STRName="strpwjatoba02" $nsgName ="NSG-VM-01" #Pedir credenciais VM #$cred=Get-Credential -Message "Digite o nome e a senha da conta de administrador local." $VMLocalAdminUser = "administrador" $VMLocalAdminSecurePassword = ConvertTo-SecureString "Jatoba@2020" -AsPlainText -Force $cred=New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword); # Definir o índice de rede e sub-rede virtual existente. $vnetName="VNet-001" $subnetIndex=0 $vnet=Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgName # Criar o NIC com IP público. $nicName="VM-001" $pip=New-AzPublicIpAddress -Name $nicName -ResourceGroupName $rgName -Location $locName -AllocationMethod Dynamic $nic=New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $locName -SubnetId $vnet.Subnets[$subnetIndex].Id -PublicIpAddressId $pip.Id # Criar o NIC sem IP público. $nicName="VM-001" $vnet=Get-AzVirtualNetworkSubnetConfig -Name Backend -VirtualNetwork $vnet $nic=New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $locName -SubnetId $vnet.Id $pip.Id #Adicionando NSG(Grupo de Segurança) $rules = New-AzNetworkSecurityRuleConfig -Name 'default-allow-rdp' -Direction Inbound -Priority 1000 -Access Allow -SourceAddressPrefix '*' -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange 3389 -Protocol Tcp $nsg = New-AzNetworkSecurityGroup -Name $nsgName -ResourceGroupName $rgName -Location $locName -SecurityRules $rules # Especificar o Nome e tamanho. $vmName="VM-001" $vmSize="Standard_DS3_v2" $vm=New-AzVMConfig -VMName $vmName -VMSize $vmSize # Especificar a imagem e a conta de administrador local e em seguida, adicione o NIC. $pubName="MicrosoftWindowsServer" $offerName="WindowsServer" $skuName="2019-Datacenter" $vm=Set-AzVMOperatingSystem -VM $vm -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent -EnableAutoUpdate $vm=Set-AzVMSourceImage -VM $vm -PublisherName $pubName -Offer $offerName -Skus $skuName -Version "latest" $vm=Add-AzVMNetworkInterface -VM $vm -Id $nic.Id # Especifique o nome de disco do sistema operacional e criar a VM $diskName="OSDisk" $storageAcc=Get-AzStorageAccount -ResourceGroupName $rgName -Name $STRName $osDiskUri=$storageAcc.PrimaryEndpoints.Blob.ToString() + "vhds/" + $vmName + $diskName + ".vhd" $vm=Set-AzVMOSDisk -VM $vm -Name $diskName -VhdUri $osDiskUri -CreateOption fromImage New-AzVM -ResourceGroupName $rgName -Location $locName -VM $vm
Obrigado pessoal, espero que tenham gostado dessa serie de artigos.
Até o próximo post.