Implantar vMX a partir do Azure CLI
O script de implantação e o arquivo de configuração de amostra nesta seção simplifica a implantação do vMX na rede virtual Microsoft Azure. O arquivo de configuração inclui parâmetros que permitem personalizar sua implantação vMX VM, como nome de usuário de login e interfaces de rede (NICs).
Recomendamos que você implante seus VMX VMs usando o método Azure CLI descrito nesta seção, em vez de usar o Portal Azure para implantar o vMX manualmente.
O que vem a seguir
Antes de implantar o vMX usando o Azure CLI
Antes de começar a implantar o vMX a partir do Azure CLI:
Obtenha uma conta e uma assinatura do Microsoft Azure. Consulte o Microsoft Azure.
Use seu nome de usuário e senha da sua conta microsoft para fazer login no portal do Microsoft Azure. O Portal Azure será usado mais tarde nesta seção para verificar a implantação do vMX usando o método Azure CLI.
Instale a versão mais recente da interface de linha de comando Azure (Azure CLI). Consulte a instalação do Azure CLI).
Compre uma licença vMX ou solicite uma licença de avaliação. As licenças podem ser obtidas no Juniper Networks License Management System (LMS).
Para obter informações sobre a licença de avaliação para vMX, consulte https://www.juniper.net/us/en/dm/free-vmx-trial/.
Nota:No Microsoft Azure, você pode hospedar servidores e serviços na nuvem como um serviço pay-as-you-go (PAYG) ou de trazer sua própria licença (BYOL). As imagens payg não exigem licenças da Juniper Networks.
Primeiro, você deve executar o seguinte comando Azure CLI para aceitar os termos do Contrato de Licença do Usuário Final (EULA) para a imagem específica de BYOL ou PAYG vMX que você deseja implantar. Caso contrário, você encontrará um erro de obrigabilidade do MarketplacePurchaseLigibility na fase de criação de VM do script de implantação discutido mais tarde nesta seção.
Você só precisa executar o seguinte comando CLI uma vez para o tipo de imagem PAYG ou BYOL que você deseja implantar.
az vm image terms accept --urn juniper-networks:vmx-services-gateway-byol:vmx-services-gateway-byol:18.3.2
Os scripts de implantação do vMX for Azure são escritos na shell e na versão mais recente dos comandos Azure CLI. As versões pré-2.x do Azure CLI não são suportadas.
A implantação do vMX no Microsoft Azure não oferece suporte ao uso do Azure CLI do Microsoft Windows porque os scripts shell usados como parte do procedimento de implantação só podem ser executados a partir do Linux ou Mac OS CLI.
Implantação de vMX a partir do Azure CLI
Use o seguinte procedimento para implantar e configurar o vMX em uma rede virtual Microsoft Azure a partir do Azure CLI.
- Usando o Microsoft Azure CLI
- Usando as ferramentas de implantação vMX
- Modificando parâmetros de configuração vMX para implantação
- Implantação do vMX usando o script Shell
- Verificando a implantação do vMX no Microsoft Azure
- Login em uma instância vMX
- Configuração inicial para vMX
Usando o Microsoft Azure CLI
Para executar o script Azure CLI fornecido, você pode instalar o Azure CLI em seu servidor.
Realize uma das seguintes tarefas para o método escolhido:
Instalação do Azure CLI
Para instalar e fazer login no Azure CLI:
Usando as ferramentas de implantação vMX
A Juniper Networks fornece um conjunto de arquivos de script e configuração. Essas ferramentas visam ajudar a simplificar a implantação do vMX ao Azure ao usar o Azure CLI.
arquivo de configuração azure.config
script shell azure_vmx_deploy.sh
azure_vmx_deploy.sh automatiza a implantação da máquina virtual vMX (VM) e redes virtuais, respectivamente, usando os parâmetros no arquivo de configuração azure.config . O script shell azure_vmx_deploy.sh cria interfaces de rede, redes virtuais, sub-redes virtuais e o VM.
Para copiar os arquivos azure_vmx_deploy.sh e azure.config :
Depois de salvar os arquivos, você pode modificar o arquivo azure.config para sua configuração e executar o script azure_vmx_deploy.sh .
arquivo azure.config
# # Sample VMX deployment settings for Microsoft Azure # # Account config account="12345bf4b32bf-1234-5678-aaaa-4b348978e06a" grpname="vmxcloudv2" location="westus" # VM config vmname="vmx183-x3" admin="azuser" vmximagename="juniper-networks:vmx-services-gateway-byol:vmx-services-gateway-byol:18.3.2" # Network Config number_of_nics=4 addressprefix="30.0.0.0/16" PrivateIpAddress="30.0.0.10" PrivateIpAddress2="30.0.1.10" subnet_prefixes=( 30.0.0.0/24 30.0.1.0/24 30.0.2.0/24 30.0.3.0/24 )
arquivo azure_vmx_deploy.sh
#!/bin/sh # Copyright (c) 2020, Juniper Networks, Inc. # All rights reserved. # # # Sample deployment script for vMX on Microsoft Azure # source ./azure.config stor="stor" cont="cont" vm="_image" vnet=$grpname-vnet1 base_subnet=$vnet-vsubnet base_nic=$vmname-wan-nic mdisk="_Managed_Disk" storageacc=$grpname$stor STORAGE_CONT=$grpname$cont az account set -s $account echo "Creating resource group" az group create -n $grpname -l $location -o table echo "Created group $grpname" echo "Creating storage account" # Create storage account az storage account create --sku Standard_LRS --location $location --kind Storage --resource-group $grpname --name $storageacc --output table echo "Created storage account $storageacc" # Get connection string for the storage account KEY1=`az storage account keys list --account-name $storageacc --resource-group $grpname | grep -m 1 \"value\": | awk '{print $2}'` # Create storage container az storage container create --account-name $storageacc --name $STORAGE_CONT --account-key $KEY1 --output table echo "Created container $STORAGE_CONT" count=$(( $number_of_nics - 1 )) while [ $count -ge 0 ] do subnet_names[$count]=$base_subnet"$count" nic_names[$count]=$base_nic"$count" count=$(( $count - 1 )) done skip=1 az network vnet show -g $grpname --name $vnet > /dev/null 2>&1 if [ $? -eq 0 ]; then skip=2 echo "Vnet \"$vnet\" already exists, skipping vnet and subnet creation" fi if [ $skip -eq 1 ]; then # Create VNET echo "Creating Azure virtual network $vnet...." az network vnet create \ --resource-group $grpname \ --name $vnet \ --address-prefix $addressprefix \ --location $location \ --output table echo "Done creating Azure virtual network $vnet" # Create as many subnets as there are NICs i=0 for prefix in "${subnet_prefixes[@]}" do echo "Creating virtual subnet ${subnet_names[$i]} $prefix.." az network vnet subnet create \ --address-prefix $prefix \ --name ${subnet_names[$i]} \ --resource-group $grpname \ --vnet-name $vnet \ --output table echo "Done creating subnet ${subnet_names[$i]} with prefix $prefix" let i++ done fi # # Creating routing tables for vMX WAN ports (add tables as needed for more than 2 wan ports) # echo "Creating routing tables..." az network route-table create --name $grpname-rt-to-subnet2 --resource-group $grpname --location $location --output table az network route-table create --name $grpname-rt-to-subnet3 --resource-group $grpname --location $location --output table az network vnet subnet update --resource-group $grpname --vnet-name $vnet --name $vnet-vsubnet2 --route-table $grpname-rt-to-subnet3 --output table az network vnet subnet update --resource-group $grpname --vnet-name $vnet --name $vnet-vsubnet3 --route-table $grpname-rt-to-subnet2 --output table # # Create all NICs # echo "Creating public IP addresses and NICs..." i=0 for nic in "${nic_names[@]}" do if [ $i -eq 0 ]; then # Create Public IP for first NIC: ip=$vmname-vfp-public-ip az network public-ip create \ --name $ip \ --allocation-method Static \ --resource-group $grpname \ --location $location \ --output table # Create 1st NIC nic=$vmname-vfp-nic allnics="$allnics ""$nic" az network nic create \ --resource-group $grpname \ --location $location \ --name $nic \ --vnet-name $vnet \ --subnet ${subnet_names[$i]} \ --public-ip-address $ip \ --private-ip-address $PrivateIpAddress \ --output table echo "Created NIC $nic with public IP..." elif [ $i -eq 1 ]; then # Create Public IP for first NIC: ip2=$vmname-vcp-public-ip az network public-ip create \ --name $ip2 \ --allocation-method Static \ --resource-group $grpname \ --location $location \ --output table # Create 2nd NIC nic=$vmname-vcp-nic allnics="$allnics ""$nic" az network nic create \ --resource-group $grpname \ --location $location \ --name $nic \ --vnet-name $vnet \ --subnet ${subnet_names[$i]} \ --public-ip-address $ip2 \ --private-ip-address $PrivateIpAddress2 \ --output table echo "Created NIC $nic with public IP..." else allnics="$allnics ""$nic" az network nic create \ --resource-group $grpname \ --location $location \ --accelerated-networking true \ --name $nic \ --vnet-name $vnet \ --subnet ${subnet_names[$i]} \ --output table echo "Created NIC $nic..." fi let i++ done # # Add routes to route tables # echo "Adding routes to routing tables" ip=`az network nic show -g $grpname --name $base_nic"2"|grep privateIpAddress\"|awk '{print $2}'|sed -e s/\"//g -e s/\,//` az network route-table route create -g $grpname --route-table-name $grpname-rt-to-subnet3 --next-hop-type VirtualAppliance --name ToSubnet3 --next-hop-ip-address $ip --address-prefix ${subnet_prefixes[3]} --output table ip=`az network nic show -g $grpname --name $base_nic"3"|grep privateIpAddress\"|awk '{print $2}'|sed -e s/\"//g -e s/\,//` az network route-table route create -g $grpname --route-table-name $grpname-rt-to-subnet2 --next-hop-type VirtualAppliance --name ToSubnet2 --next-hop-ip-address $ip --address-prefix ${subnet_prefixes[2]} --output table # # Create vMX VM # echo "Creating vMX VM..." az vm create \ --name $vmname \ --size Standard_F8 \ --image $vmximagename \ --nics $allnics \ --resource-group $grpname \ --location $location \ --authentication-type ssh \ --admin-username $admin \ --generate-ssh-keys \ --storage-sku Standard_LRS \ --boot-diagnostics-storage ${grpname}stor \ --output table echo "vMX deployment complete"
Modificando parâmetros de configuração vMX para implantação
Para implantar o vMX, você pode precisar modificar os parâmetros de configuração realizando essas tarefas:
Alterando os parâmetros de configuração do Azure
No arquivo azure.config , defina esses parâmetros:
account=”account subscription id”
— Este é o ID de assinatura da conta Do Microsoft Azure.grpname="group-name"
— Nome do grupo de recursos. Insira seu grupo de recursos existente. Um nome de grupo de recursos pode incluir caracteres alfanuméricos, períodos (.), sublinhados (_), hífens (-) e parênteses (), mas o nome não pode terminar com um período.location="region"
— Localização do grupo de recursos. Selecione a localização do data center Microsoft Azure da qual você pretende implantar o VM. Especifique um local onde a maioria de seus recursos residirá. Normalmente, selecione a localização mais próxima da sua localização física.vmname="vm-name"
— nome VMX VM. O nome VM não pode conter caracteres não-ASCII ou especiais.admin="admin-username"
— Nome do usuário entrando na VM usando SSH. O nome de usuário não pode conter caracteres maiúsculos ou caracteres especiais, e não pode começar com um sinal de dólar ($) ou hífen (-).vmximagename="image-name"
— Nome da imagem vMX.number_of_nics=number-of-interfaces
— Número de interfaces, incluindo VFP (eth0), VCP (fxp0) e quaisquer portas WAN (as portas WAN aparecem como ge-x/x/x no vMX). Esse número deve ser entre 3 e 8.addressprefix="address-prefix"
— Espaço de endereço. Insira a faixa de endereço da rede virtual em CIDR notação. Por padrão, a faixa de endereços é de 30.0.0.0/16.Nota:Garanta que o espaço do endereço não se sobreponha a uma rede existente
PrivateIpAddress="ip-address"
— Endereço IP privado para porta de gerenciamento VFP (eth0). Ela deve ser contida pelo espaço de endereço da rede virtual, conforme definido noaddressprefix
parâmetro.PrivateIpAddress2="ip-address"
— Endereço IP privado para porta de gerenciamento VCP (fxp0). Ela deve ser contida pelo espaço de endereço da rede virtual, conforme definido noaddressprefix
parâmetro.subnet_prefixes=(subnet-prefix0 subnet-prefix1 subnet-prefix2 subnet-prefix3 )
— Variedade de faixas de endereço de sub-rede para cada sub-rede na rede virtual. Insira cada faixa de endereço de sub-rede em CIDR notação. Ela deve ser contida pelo espaço de endereço da rede virtual, conforme definido noaddressprefix
parâmetro. As faixas de endereço da sub-rede não podem se sobrepor umas às outras.A sub-rede é uma variedade de endereços IP em sua rede virtual para isolar VMs. Sub-redes públicas têm acesso ao gateway da Internet, mas sub-redes privadas não.
Insira tantas sub-redes no array quanto o número de interfaces. Cada NIC terá uma sub-rede correspondente definida neste arranjo. Por exemplo, se
number_of_nics
for 4, haverá quatro entradas nasubnet_prefixes
matriz.Um vMX VM requer duas sub-redes públicas e uma ou mais sub-redes públicas ou privadas para cada grupo de instâncias individuais. As interfaces de gerenciamento para VFP (eth0) e VCP (fxp0) usam uma sub-rede pública e as interfaces de receita (dados) podem usar sub-redes públicas ou privadas. As sub-redes privadas, conectadas às outras interfaces vMX, garantem que todo o tráfego entre aplicativos nas sub-redes privadas e na Internet deve passar pela instância vMX.
Por exemplo, uma rede virtual com quatro sub-redes para os quatro NICs que serão criados tem essa configuração:
subnet_prefixes=( 30.0.0.0/24 30.0.1.0/24 30.0.2.0/24 30.0.3.0/24)
.
Por exemplo, o arquivo azure.config pode se assemelhar ao seguinte:
grpname="vmxcloudv2" location="westus" # VM config vmname="vmxv2" admin="azuser" vmximagename="juniper-networks:vmx-services-gateway-byol:vmx-services-gateway-byol:18.3.2" number_of_nics=4 # Network Config addressprefix="30.0.0.0/16" PrivateIpAddress="30.0.0.1" PrivateIpAddress2=”30.0.1.10” subnet_prefixes=( 30.0.0.0/24 30.0.1.0/24 30.0.2.0/24 30.0.3.0/24 )
Você pode obter os detalhes da imagem do vMX usando o seguinte comando:
az vm image list --all --publisher juniper-networks
Adicionando NICs à configuração
O tipo de CPU Standard_F8 oferece suporte a um total de 8 portas. Cada vMX requer duas portas de gerenciamento no Azure, deixando no máximo 6 portas WAN.
A instância vMX contém duas máquinas virtuais (VMs) separadas, uma para o plano de encaminhamento virtual VMX FPC (VFP) e uma para o plano de controle virtual (VCP)
O VFP tem uma porta de gerenciamento dedicada (eth0) mapeada para o nome <vm>-vfp-nic do vMX.
O VCP tem uma porta de gerenciamento dedicada (fxp0) mapeada para o nome <vm>-vcp-nic do vMX.
O endereço IP público configurado em grupos de recursos > grupo de recursos vMX > vmname-vcp-nic. O nome vMX é o endereço IP a ser usado para se conectar ao FPC VMX RE (VCP) usando SSH.
Para alterar o número de interfaces de rede (NICs):
Implantação do vMX usando o script Shell
O script shell azure_vmx_deploy.sh implanta a máquina virtual vMX (VM) em um grupo de recursos baseado em sua localização geográfica do Azure Cloud.
Para implantar o vMX na rede virtual Azure, execute o script azure_vmx_deploy.sh para criar as sub-redes virtuais, NICs e VM. Os parâmetros definidos no arquivo de configuração azure.config são usados para implantar o vMX.
Por exemplo, se o arquivo azure.config conter os seguintes parâmetros:
grpname="vmxcloudv2" location="westus" # VM config vmname="vmxv2" admin="user" vmximagename="juniper-networks:vmx-services-gateway-byol:vmx-services-gateway-byol:18.3.2" number_of_nics=4 # Network Config addressprefix="30.0.0.0/16" PrivateIpAddress="30.0.0.10" subnet_prefixes=( 30.0.0.0/24 30.0.1.0/24 30.0.2.0/24 30.0.3.0/24 )
Executar o script azure_vmx_deploy.sh gera a saída a seguir.
$ ./azure_vmx_deploy.sh Creating resource group Location Name ---------- ----------- westus vmxcloudv2 Created group vmxcloudv2 Creating storage account CreationTime EnableHttpsTrafficOnly Kind Location Name PrimaryLocation ProvisioningState ResourceGroup StatusOfPrimary -------------------------------- ------------------------ ------- ---------- --------------- ----------------- ------------------- --------------- ----------------- 2020-03-11T00:12:55.943835+00:00 True Storage westus vmxcloudv2stor westus Succeeded vmxcloudv2 available Created storage account vmxcloudv2stor Created --------- False Created container vmxcloudv2cont Creating Azure virtual network vmxcloudv2-vnet1.... Done creating Azure virtual network vmxcloudv2-vnet1 Creating virtual subnet vmxcloudv2-vnet1-vsubnet0 30.0.0.0/24.. AddressPrefix Name PrivateEndpointNetworkPolicies PrivateLinkServiceNetworkPolicies ProvisioningState ResourceGroup --------------- -------------------------- -------------------------------- ----------------------------------- ------------------- --------------- 30.0.0.0/24 vmxcloudv2-vnet1-vsubnet0 Enabled Enabled Succeeded vmxcloudv2 Done creating subnet vmxcloudv2-vnet1-vsubnet0 with prefix 30.0.0.0/24 Creating virtual subnet vmxcloudv2-vnet1-vsubnet1 30.0.1.0/24.. AddressPrefix Name PrivateEndpointNetworkPolicies PrivateLinkServiceNetworkPolicies ProvisioningState ResourceGroup --------------- -------------------------- -------------------------------- ----------------------------------- ------------------- --------------- 30.0.1.0/24 vmxcloudv2-vnet1-vsubnet1 Enabled Enabled Succeeded vmxcloudv2 Done creating subnet vmxcloudv2-vnet1-vsubnet1 with prefix 30.0.1.0/24 Creating virtual subnet vmxcloudv2-vnet1-vsubnet2 30.0.2.0/24.. AddressPrefix Name PrivateEndpointNetworkPolicies PrivateLinkServiceNetworkPolicies ProvisioningState ResourceGroup --------------- -------------------------- -------------------------------- ----------------------------------- ------------------- --------------- 30.0.2.0/24 vmxcloudv2-vnet1-vsubnet2 Enabled Enabled Succeeded vmxcloudv2 Done creating subnet vmxcloudv2-vnet1-vsubnet2 with prefix 30.0.2.0/24 Creating virtual subnet vmxcloudv2-vnet1-vsubnet3 30.0.3.0/24.. AddressPrefix Name PrivateEndpointNetworkPolicies PrivateLinkServiceNetworkPolicies ProvisioningState ResourceGroup --------------- -------------------------- -------------------------------- ----------------------------------- ------------------- --------------- 30.0.3.0/24 vmxcloudv2-vnet1-vsubnet3 Enabled Enabled Succeeded vmxcloudv2 Done creating subnet vmxcloudv2-vnet1-vsubnet3 with prefix 30.0.3.0/24 Creating routing tables... DisableBgpRoutePropagation Location Name ProvisioningState ResourceGroup ---------------------------- ---------- ------------------------- ------------------- --------------- False westus vmxcloudv2-rt-to-subnet2 Succeeded vmxcloudv2 DisableBgpRoutePropagation Location Name ProvisioningState ResourceGroup ---------------------------- ---------- ------------------------- ------------------- --------------- False westus vmxcloudv2-rt-to-subnet3 Succeeded vmxcloudv2 AddressPrefix Name PrivateEndpointNetworkPolicies PrivateLinkServiceNetworkPolicies ProvisioningState ResourceGroup --------------- -------------------------- -------------------------------- ----------------------------------- ------------------- --------------- 30.0.2.0/24 vmxcloudv2-vnet1-vsubnet2 Enabled Enabled Succeeded vmxcloudv2 AddressPrefix Name PrivateEndpointNetworkPolicies PrivateLinkServiceNetworkPolicies ProvisioningState ResourceGroup --------------- -------------------------- -------------------------------- ----------------------------------- ------------------- --------------- 30.0.3.0/24 vmxcloudv2-vnet1-vsubnet3 Enabled Enabled Succeeded vmxcloudv2 Creating public IP addresses and NICs... Created NIC vmx183-x3-vfp-nic with public IP... Created NIC vmx183-x3-vcp-nic with public IP... Created NIC vmx183-x3-wan-nic2... Created NIC vmx183-x3-wan-nic3... Adding routes to routing tables AddressPrefix Name NextHopIpAddress NextHopType ProvisioningState ResourceGroup --------------- --------- ------------------ ---------------- ------------------- --------------- 30.0.3.0/24 ToSubnet3 30.0.2.4 VirtualAppliance Succeeded vmxcloudv2 AddressPrefix Name NextHopIpAddress NextHopType ProvisioningState ResourceGroup --------------- --------- ------------------ ---------------- ------------------- --------------- 30.0.2.0/24 ToSubnet2 30.0.3.4 VirtualAppliance Succeeded vmxcloudv2 Creating vMX VM... ResourceGroup PowerState PublicIpAddress Fqdns PrivateIpAddress MacAddress Location Zones --------------- ------------ ------------------------ ------- ------------------------------------- ----------------------------------------------------------------------- ---------- ------- vmxcloudv2 VM running 52.160.86.48,40.83.167.5 30.0.0.10,30.0.1.10,30.0.2.4,30.0.3.4 00-0D-3A-5C-0B-1D,00-0D-3A-5C-08-9C,00-0D-3A-5C-09-83,00-0D-3A-5C-0E-D8 westus vMX deployment complete
Verificando a implantação do vMX no Microsoft Azure
Para verificar a implantação da instância vMX no Microsoft Azure:
Login em uma instância vMX
Após a implantação do vMX ser concluída, a instância vMX é ativada e lançada automaticamente. Neste ponto, você pode usar um cliente SSH para fazer login na instância vMX.
Pode levar 15 minutos ou mais para o vMX terminar de implantar e estar pronto para login via SSH.
Para fazer login no vMX VM:
Configuração inicial para vMX
No mínimo, você deve realizar essas tarefas iniciais de configuração do Junos OS após fazer login no vMX: