Utilize uma amostra de script Azure CLI para criar uma rede para aplicações multi-camadas

Este script de exemplo cria uma rede virtual com as sub-redes de front-end e back-end. O tráfego para a sub-rede do front-end está limitado a HTTP e SSH, enquanto o tráfego para a sub-rede de back-end está limitado a MySQL, porta 3306. Depois de executar o script, tem duas máquinas virtuais, uma em cada sub-rede nas quais pode implementar software MySQL e o servidor Web.

Para executar esta amostra, instale a versão mais recente do Azure CLI. Para começar, execute az login para criar uma ligação ao Azure.

As amostras para o Azure CLI são escritas para a bash concha. Para executar esta amostra em Windows PowerShell ou Solicitação de Comando, poderá ter de alterar elementos do script.

Se não tiver uma subscrição do Azure, crie uma conta Azure gratuita antes de começar.

Script de exemplo

#!/bin/bash
# Passed validation in Cloud Shell 02/03/2022

# <FullScript>
# Create vNet for multi-tier application

# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
location="East US"
resourceGroup="msdocs-virtual-network-rg-$randomIdentifier"
tag="virtual-network-multi-tier-application"
vNet="msdocs-vNet-$randomIdentifier"
addressPrefixVNet="10.0.0.0/16"
subnetFrontEnd="msdocs-frontend-subnet-$randomIdentifier"
subnetPrefixFrontEnd="10.0.1.0/24"
nsgFrontEnd="msdocs-nsg-frontend-$randomIdentifier"
subnetBackEnd="msdocs-backend-subnet-$randomIdentifier"
subnetPrefixBackEnd="10.0.2.0/24"
nsgBackEnd="msdocs-nsg-backend-$randomIdentifier"
publicIpWeb="msdocs-public-ip-web-$randomIdentifier"
publicIpSql="msdocs-public-ip-sql-$randomIdentifier"
nicWeb="msdocs-nic-web-$randomIdentifier"
nicSql="msdocs-nic-sql-$randomIdentifier"
image="UbuntuLTS"
login="azureuser"
vmWeb="msdocs-vm-web$randomIdentifier"
vmSql="msdocs-vm-sql$randomIdentifier"
sku="BASIC"

echo "Using resource group $resourceGroup with login: $login"

# Create a resource group
echo "Creating $resourceGroup in $location..."
az group create --name $resourceGroup --location "$location" --tags $tag

# Create a virtual network and a front-end subnet.
echo "Creating $vNet and $subnetFrontEnd"
az network vnet create --resource-group $resourceGroup --name $vNet --address-prefix $addressPrefixVNet  --location "$location" --subnet-name $subnetFrontEnd --subnet-prefix $subnetPrefixFrontEnd

# Create a backend subnet.
echo "Creating $subnetBackEnd"
az network vnet subnet create --address-prefix $subnetPrefixBackEnd --name $subnetBackEnd --resource-group $resourceGroup --vnet-name $vNet

# Create a network security group (NSG) for the front-end subnet.
echo "Creating $nsgFrontEnd for $subnetFrontEnd"
az network nsg create --resource-group $resourceGroup --name $nsgFrontEnd --location "$location"

# Create NSG rules to allow HTTP & HTTPS traffic inbound.
echo "Creating $nsgFrontEnd rules in $nsgFrontEnd to allow HTTP and HTTPS inbound traffic"
az network nsg rule create --resource-group $resourceGroup --nsg-name $nsgFrontEnd --name Allow-HTTP-All --access Allow --protocol Tcp --direction Inbound --priority 100 --source-address-prefix Internet --source-port-range "*" --destination-address-prefix "*" --destination-port-range 80
az network nsg rule create --resource-group $resourceGroup --nsg-name $nsgFrontEnd --name Allow-HTTPS-All --access Allow --protocol Tcp --direction Inbound --priority 200 --source-address-prefix Internet --source-port-range "*" --destination-address-prefix "*" --destination-port-range 443

# Create an NSG rule to allow SSH traffic in from the Internet to the front-end subnet.
echo "Creating NSG rule in $nsgFrontEnd to allow inbound SSH traffic"
az network nsg rule create --resource-group $resourceGroup --nsg-name $nsgFrontEnd --name Allow-SSH-All --access Allow --protocol Tcp --direction Inbound --priority 300 --source-address-prefix Internet --source-port-range "*" --destination-address-prefix "*" --destination-port-range 22

# Associate the front-end NSG to the front-end subnet.
echo "Associate $nsgFrontEnd to $subnetFrontEnd"
az network vnet subnet update --vnet-name $vNet --name $subnetFrontEnd --resource-group $resourceGroup --network-security-group $nsgFrontEnd

# Create a network security group for the backend subnet.
echo "Creating $nsgBackEnd for $subnetBackEnd"
az network nsg create --resource-group $resourceGroup --name $nsgBackEnd --location "$location"

# Create an NSG rule to allow MySQL traffic from the front-end subnet to the backend subnet.
echo "Creating NSG rule in $nsgBackEnd to allow MySQL traffic from $subnetFrontEnd to $subnetBackEnd"
az network nsg rule create --resource-group $resourceGroup --nsg-name $nsgBackEnd --name Allow-MySql-FrontEnd --access Allow --protocol Tcp --direction Inbound --priority 100 --source-address-prefix $subnetPrefixFrontEnd --source-port-range "*" --destination-address-prefix "*" --destination-port-range 3306

# Create an NSG rule to allow SSH traffic from the Internet to the backend subnet.
echo "Creating NSG rule in $nsgBackEnd to allow SSH traffic from the Internet to $subnetBackEnd"
az network nsg rule create --resource-group $resourceGroup --nsg-name $nsgBackEnd --name Allow-SSH-All --access Allow --protocol Tcp --direction Inbound --priority 200 --source-address-prefix Internet --source-port-range "*" --destination-address-prefix "*" --destination-port-range 22

# Create an NSG rule to block all outbound traffic from the backend subnet to the Internet (NOTE: If you run the MySQL installation below this rule will be disabled and then re-enabled).
echo "Creating NSG rule in $nsgBackEnd to block all outbound traffic from $subnetBackEnd"
az network nsg rule create --resource-group $resourceGroup --nsg-name $nsgBackEnd --name Deny-Internet-All --access Deny --protocol Tcp --direction Outbound --priority 300 --source-address-prefix "*" --source-port-range "*" --destination-address-prefix "*" --destination-port-range "*"

# Associate the backend NSG to the backend subnet.
echo "Associate $nsgBackEnd to $subnetBackEnd"
az network vnet subnet update --vnet-name $vNet --name $subnetBackEnd --resource-group $resourceGroup --network-security-group $nsgBackEnd

# Create a public IP address for the web server VM.
echo "Creating $publicIpWeb for $vmWeb"
az network public-ip create --resource-group $resourceGroup --name $publicIpWeb

# Create a NIC for the web server VM.
echo "Creating $nicWeb for $vmWeb"
az network nic create --resource-group $resourceGroup --name $nicWeb --vnet-name $vNet --subnet $subnetFrontEnd --network-security-group $nsgFrontEnd --public-ip-address $publicIpWeb

# Create a Web Server VM in the front-end subnet.
echo "Creating $vmWeb in $subnetFrontEnd"
az vm create --resource-group $resourceGroup --name $vmWeb --nics $nicWeb --image $image --admin-username $login --generate-ssh-keys  --public-ip-sku $sku

# Create a public IP address for the MySQL VM.
echo "Creating $publicIpSql for $vmSql"
az network public-ip create --resource-group $resourceGroup --name $publicIpSql

# Create a NIC for the MySQL VM.
echo "Creating $nicSql for $vmSql"
az network nic create --resource-group $resourceGroup --name $nicSql --vnet-name $vNet --subnet $subnetBackEnd --network-security-group $nsgBackEnd --public-ip-address $publicIpSql

# Create a MySQL VM in the backend subnet.
echo "Creating $vmSql in $subnetBackEnd"
az vm create --resource-group $resourceGroup --name $vmSql --nics $nicSql --image $image --admin-username $login --generate-ssh-keys  --public-ip-sku $sku
# </FullScript>

# echo "Deleting all resources"
# az group delete --name $resourceGroup -y

Limpar a implementação

Execute o seguinte comando para remover o grupo de recursos, a VM e todos os recursos relacionados.

az group delete --name MyResourceGroup --yes

Explicação do script

Este script utiliza os seguintes comandos para criar um grupo de recursos, uma rede virtual e grupos de segurança de rede. Cada comando na tabela liga à documentação específica do comando.

Comando Notas
az group create Cria um grupo de recursos no qual todos os recursos são armazenados.
az network vnet create Cria uma rede e sub-rede virtual de front-end do Azure.
az network subnet create Cria uma sub-rede de back-end.
az network public-ip create Cria um endereço IP público para aceder ao VM a partir da Internet.
az network nic create Cria interfaces de rede virtual e anexa-as a sub-redes de front-end e back-end da rede virtual.
az network nsg create Cria grupos de segurança (NSG) que estão associados às sub-redes de front-end e back-end.
az network nsg rule create Cria regras do NSG que permitem ou bloquear portas específicas para sub-redes específicas.
az vm create Cria máquinas virtuais e anexa um NIC para cada VM. Este comando também especifica a imagem da máquina virtual a utilizar e as credenciais administrativas.
az group delete Elimina um grupo de recursos e todos os recursos contidos no mesmo.

Passos seguintes

Para obter mais informações sobre a CLI do Azure, veja Documentação da CLI do Azure.

Amostras adicionais de script CLI em rede podem ser encontradas na documentação da visão geral da rede Azure