lunes, 16 de marzo de 2020

Microsoft Azure - Crear entorno a través de Powershell

Hola chicos como estan
En este último artículo implementaremos un entorno completo a través de powershell. La intención con esto sería un artículo, era ayudarlo en la creación de cada recurso y, después de una manera automatizada, ayudar en la entrega de proyectos o iniciar proyectos con powershell.


¿Qué hay en este script?
  • Grupo de recursos;
  • Cuenta de almacenamiento;
  • Compartir archivos;
  • Contenedores de registro;
  • Creación de red;
  • Creación de máquina virtual;
  • Tarjeta de red de creación;
  • Creación del grupo de seguridad de red;
Ahora vamos, haz que la magia suceda rsrsrsrsrs
Capture algunas pantallas para entender su  tiempo de ejecución del script, para que pueda tener una idea de lo simple y rápida que es la creación. 













Este script es ideal en escenarios de iniciación de proyectos, donde ya tiene listo su alcance.
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= "xxxx"
$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 "xxxx"
$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageAccount.ResourceGroupName -Name $storageAccount.StorageAccountName | select -first 1).Value
$storageContext = New-AzStorageContext -StorageAccountName $storageAccount.StorageAccountName -StorageAccountKey $storageKey
New-AzureStorageShare -Name "xxxxfileshare" -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="xxxx"
$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 "xxxx" -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



Gracias chicos, espero que hayan disfrutado esta serie de artículos.

Hasta el próximo post.

1 comentario:

  1. ISO 45001:2018 Standard is proposed to purely concentrate on the Occupational Health and Safety Management System (OH&SMS) of an organization. This standard certainly creates a safe, healthy and confident working environment for employees and visitors. ISO 45001 Certification in Philippines|Short Audit and Reports|certificate in record time|Simple-Transparent|Contact:enquiry@iascertification.com. Call @+6531591803

    ResponderBorrar