Fala Pessoall! Td bem?

Continuando a série #Scriptando (tentarei trazer periodicamente), falando um pouco mais sobre os scripts que eu uso no meu dia a dia.

A dica de hoje é bem legal, pois depois que aprendi a manipular a parte de Networking no Azure, utilizando Powershell, consigo provisionar um ambiente do ZERO, com pouco esforço e muita destreza.

Então, bora lá: Como criar uma VNet (Virtual Network), usando o Powershell?

Mas, antes de colocar a mão na massa, precisamos saber: O QUE É VIRTUAL NETWORK? 

VNet | Virtual Network (ou Rede Virtual)

Uma VNet é basicamente uma Rede Lógica Virtual, dentro do Azure. (Mas por que Rede Lógica, e não Física?)

Basicamente, a Microsoft (não somente ela, isso vem do Modelo Computacional Cloud, ok?) abstrai toda a parte física do ambiente de rede no Azure, sendo assim, não precisamos nos preocupar quando à equipamentos de rede física e nem mesmo sua estrutura. Isso facilita bastante a gestão de rede dos recursos e conectividade.

Com isso, temos a representação física/lógica de uma Rede que irá interligar nossos recursos, a chamada VNet.

Uma VNet (também conhecida como serviço de Rede Virtual do Azure) permite a conexão entre recursos, através de um número IP (IPv4).

Com isso, a Microsoft provê: 

Isolamento: Posso ter mais de uma VNet, porém elas são ISOLADAS umas das outras. Com isso, eu tenho maior segurança e segmentação de tráfego dentro da minha assinatura.

Internet: Por padrão, todas as instâncias de VM ou serviços de nuvem que são conectados a uma VNet possuem acesso à Internet. (No entanto é possível trabalhar com regras específicas de liberação e bloqueios a determinadas portas/serviços, usando o NSG) Não conhece sobre NSG? [Veja sobre, nesse post aqui]

Conectividade: Os recursos do Azure, podem se comunicar entre si através de uma VNet.

Comunicação entre VNets: Falei anteriormente que as VNets são isoladas, certo? Cada VNet, possui um fluxo de tráfego diferente da outra. Mas isso não quer dizer que elas não podem se comunicar umas com as outras. O tráfego entre VNets é permitido, e deve ser configurado através de um Gateway de Conexão. (Detalhe: Tráfego entre VNets, pode ser cobrado à parte. Então, fiquem ligados)

Comunicação com Rede On Premises: É possível estabelecer comunicação entre sua rede local (On Premises) com o Azure, através de um túnel de VPN S2S (Site-to-Site) totalmente criptografado utilizando IPSec com SSL.

É possível também, estabelecer filtragem de tráfego (com NSG) e também é possível substituir o roteamento padrão do Azure, configurando nossas próprias rotas usando BGP. O Azure já provê também, um servidor de DNS para resolução de nomes dentro de uma VNet e inclusive externos, porém é possível informar um servidor de DNS próprio (até mesmo o DNS On Premises).

É possível também utilizar um NVA, uma solução de virtualização de rede. Basicamente é uma VM que executa um Software responsável por uam função de rede, tipo um firewall por exemplo. Existem NVA’s que fornecem também otimização WAN e até mesmo outras funções de tráfego de rede.

Dentro de uma região, é possível implementar várias VNets podendo segmentar os ambientes de Desenvolvimento, Testes e produção, por exemplo.

Pois beeeemmm!! Vamos colocar a mão na massa?

Criando sua primeira VNet |Virtual Network (Rede Virtual) 

[1] Faça o Login em Sua Assinatura Azure (Powershell)

[sourcecode language=”powershell”]Login-AzureRmAccount[/sourcecode] [2]  Vamos armazenar algumas informações necessárias nas seguintes variáveis:

[sourcecode language=”powershell”]

#Nome do grupo de recursos que você deseja utilizar para criar a VNet

$rg="nome_do_resource_group"

# Nome da location, onde o grupo de recursos está localizado, ou, pode ser também uma outra location. Ex.: brazilsouth, eastus2, weastus

$loc="nome_da_location"

# Nome da Subnet que você deseja criar. Obs.: Caso, você queira criar uma Subnet de Gateway (que é utilizada para fechar uma VPN) você deverá especificar aqui o seguinte valor: GatewaySubnet. Caso contrário, você poderá optar por usar qualquer outro nome que queira.

$subname1="nome_da_subnet1"

# Range de IP que deverá ser utilizado pela Subnet. (Ex.: 10.0.0.0/24)&

# Obs.: Como iremos especificar primeiro a Subnet e depois a VNet, devemos ficar atentos para que o range da subnet fique dentro o range da VNet.
# Como assim? Não podemos ter uma Vnet 10.0.0.0/24 (254 endereços) e dentro dela uma Subnet 10.0.0.0/23 (510 endereços).

$subipclass1="classe_de_ip_subnet1"

# Nome da Segunda Subnet que você deseja criar. Obs.: Caso você queria criar apenas uma Subnet, é possível. Apenas desconsidere essa váriável e a próxima.

$subname2="nome_da_subnet2"

# Range de IP que deverá ser utilizado pela Segunda Subnet. (Ex.: 10.0.0.0/24)

$subipclass2="classe_de_ip_subnet2"

[/sourcecode] [3]  Vamos passar o comando de criação das 2 Subnets, para as variáveis $subnet1 e $subnet2:

Obs,: Isso será feito para minimizar o comando de criaçaõ da VNet. Otimizando assim nosso Script.

[sourcecode language=”powershell”] $subnet1 = New-AzureRmVirtualNetworkSubnetConfig -Name $subname1 -AddressPrefix $subipclass1

$subnet2 = New-AzureRmVirtualNetworkSubnetConfig -Name $subname2 -AddressPrefixn $subipclass2
[/sourcecode] [4] Iremos agora, armazenar em 2 variásveis o nome da VNet e a Classe de IP a ser utilizada por ela:

[sourcecode language=”powershell”]

$vnet="Nome_da_Vnet"

$vnetipclass="classe_de_ip_vnet"

[/sourcecode] [5] Finalmente, agora vamos criar a VNet, já com as 2 Subnets informadas e todo o ambiente de rede já definido. (Subnets, VNet e Classe de IP’s)

[sourcecode language=”powershell”] New-AzureRmVirtualNetwork -Name $vnet -ResourceGroupName $rg -Location $loc -AddressPrefix $vnetipclass -Subnet $subnet1,$subnet2
[/sourcecode]

E pronto! Nossa VNet já foi criada, e já está disponível no Azure para utilização.

Simples?  Fácil? Rápido? (Deixe seu feedback!)

Nos próximos artigos (#Scriptando), irei falar mais sobre criação de recursos no Azure, usando o Powershell, e como estou fazendo para automatizar minha vida, e ganhar tempo!

Um bjo no coração de vocês!

Um Forte Abraço!

Gustavo Magella

#borapranuvem #cloud4all