Infraestrutura

Criando Azure Redis Cache CLI (Bash)

Neste artigo iremos criar Azure Redis Cache via CLI na modalidade mais simples.
Vamos ao script

##Declarando Variaveis (Obrigatório)

export Subscription_Name=”Santana-Corp”
export RG_Name=”Redis-PRD”
export Location=”eastus”
export Object_Name=”DB-Redis”

##Variaveis Redis

export SKU=”Basic”
export TierVM=”c0″

##Variaveis TAGs (Não Obrigatório)

export Costacenter=”Centro de Custos”
export Value_Costcenter=”111245″
export Environment=”Environment”
export Environment_Value=”Produção”
export Depto=”Departamento”
export Depto_Value=”Recursos Humanos”

##Criando Resource Group

az group create -n “${RG_Name}” -l “${Location}” –tags “${Costacenter}”=”${Value_Costcenter}” “${Environment}”=”${Environment_Value}” “${Depto}”=”${Depto_Value}”

###

az redis create -l “${Location}” -n “${Object_Name}” -g “${RG_Name}” –sku “${SKU}” –vm-size “${TierVM}” –tags “${Costacenter}”=”${Value_Costcenter}” “${Environment}”=”${Environment_Value}” “${Depto}”=”${Depto_Value}”

DNS Server Personal Multi cloud em Infraestrutura Híbrida

Neste artigo venha trazer um modelo de DNS Personal multi cloud em infraestrutura Híbrida, não estou certo nem errado para promover essa infraestrutura de DNS, quero apenas mostrar como uma infraestrutura de DNS Personal em alta disponibilidade Multi Cloud pode ser altamente recomendada em ambientes Híbrido Multi Cloud.

Bom chegar de falar e vamos lá.

Primeiramente vamos separar aqui os papeis, DNS é DNS e AD é AD, certo disso, então vamos a mão na massa. (Não vou entrar muito em detalhes de topologia e configurações, aqui será mais uma visão macro da infraestrutura de DNS Personal)

Vamos ao nosso ambiente On Premises.

Temos em nosso em ambiente local as seguintes configurações:

Site SP Paulista

Rede: 10.128.0.0/22
Servidores AD: 02
Servidores DNS: 04

Active Directory

Domain AD: glbx.corp
IP: 10.128.0.1 (BRSPPTAAD01)
IP: 10.128.0.2 (BRSPPTAAD02)
Reverse Zone: Secundary 10.128.1.2 (Zone Primary)
Foward Zone DNS: intranet, intracorp, dc, corp, infra, homolg, dev, pp, uat, qa, prod, sandbox

DNS Server
IP: 10.128.1.1 (BRSPPTADNS01)
IP: 10.128.1.2 (BRSPPTADNS02)
IP: 10.128.1.3 (BRSPPTADNS03)
IP: 10.128.1.4 (BRSPPTADNS04)
Domínios DNS Personal: intranet, intracorp, dc, corp, infra, homolg, dev, pp, uat, qa, prod, sandbox
Reverse Zone: 10.128
Foward Zone DNS: azure.net, windows.net, azure.com à 168.63.129.16
Foward Zone DNS: glbx.corp  10.128.0.1/10.128.0.2
DHCP Server
10.128.0.65 (BRSPPTADHCP01)
10.128.0.66 (BRSPPTADHCP01)
Scope
Vlan100 10.128.3.0/26
Vlan101 10.128.3.64/26
Vlan102 10.128.3.128/26
Vlan103 10.128.3.192/26
DNS1: 10.128.3.254
DNS2: 10.128.3.253

Topologia On Premises

Estrutura Azure

Site Azure BR SAO
Rede: 10.128.4.0/22
Servidores AD: 02
Servidores DNS: 04

Active Directory
Domain AD: glbx.corp
IP: 10.128.4.68 (BRSAOAZUAD01)
IP: 10.128.4.69 (BRSAOAZUAD02)
Reverse Zone: Secundary 10.128.1.2 (Zone Primary)
Foward Zone DNS: intranet, intracorp, dc, corp, infra, homolg, dev, pp, uat, qa, prod, sandbox

DNS Server
IP: 10.128.4.135 (BRSAOAZUDNS01)
IP: 10.128.4.136 (BRSAOAZUDNS02)
IP: 10.128.4.137 (BRSAOAZUDNS03)
IP: 10.128.4.138 (BRSAOAZUDNS04)
Domínios DNS Personal: intranet, intracorp, dc, corp, infra, homolg, dev, pp, uat, qa, prod, sandbox
Reverse Zone: 10.128
Foward Zone DNS: azure.net, windows.net, azure.com à 168.63.129.16
Foward Zone DNS: glbx.corp  10.128.4.68/10.128.4.69

Internel Load Balance
VIP1: 10.128.4.254
VIP2: 10.128.4.253

DNS Personal Vnet
DNS1: 10.128.4.254
DNS2: 10.128.4.253

Estrutura AWS

Site AWS BR SAO
Rede: 10.128.8.0/22
Servidores AD: 02
Servidores DNS: 04

Active Directory
Domain AD: glbx.corp
IP: 10.128.8.68 (BRSAOAWSAD01)
IP: 10.128.8.69 (BRSAOAWSAD02)
Reverse Zone: Secundary 10.128.1.2 (Zone Primary)
Foward Zone DNS: intranet, intracorp, dc, corp, infra, homolg, dev, pp, uat, qa, prod, sandbox

DNS Server
IP: 10.128.8.135 (BRSAOAWSDNS01)
IP: 10.128.8.136 (BRSAOAWSDNS02)
IP: 10.128.8.137 (BRSAOAWSDNS03)
IP: 10.128.8.138 (BRSAOAWSDNS04)
Domínios DNS Personal: intranet, intracorp, dc, corp, infra, homolg, dev, pp, uat, qa, prod, sandbox
Reverse Zone: 10.128
Foward Zone DNS: azure.net, windows.net, azure.com –> 168.63.129.16
Foward Zone DNS: glbx.corp  10.128.4.68/10.128.4.69

Internel Load Balance
VIP1: 10.128.8.254
VIP2: 10.128.8.253

DNS Personal Vnet
DNS1: 10.128.8.254
DNS2: 10.128.8.253

Topologia DNS AWS

E por fim chegamos em nossa infraestrutura DNS com Alta disponibilidade em ambiente multi Cloud Híbrido.

Temos em nossos servidores de DNS as seguintes zonas Domínios DNS Personal: intranet, intracorp, dc, corp, infra, homolg, dev, pp, uat, qa, prod, sandbox
Reverse Zone: 10.128
Foward Zone DNS: glbx.corp (cada servidor DNS faz o Foward para seu respectivo AD Local)
Exemplo Azure faz  Forward para BRSAOAZUAD01 e BRSAOAZUAD01
Exemplo AWS faz Forward para BRSAOAWSAD01 e BRSAOAWSAD01
Exemplo On Premises faz Forward para BRSAOPTAAD01 e BRSAOPTAAD01

Veja nossa infra completa

Criando Virtual Machine CentOS Azure CLI (bash) com acesso via chave publica/privada

Neste artigo iremos criar uma Maquina Virtual com CentOS Linux utilizando uma Vnet existente e fixando IP (rede interna), criaremos também um NSG para esta VM, um storage account para diagnostico de boot e conjunto de disponibilidade e com acesso via chave publica/privada sem a necessidade de utilizar senha.

#!/bin/bash

##Declarando variáveis

##Declarando variáveis (Obrigatório)

export Subscription_Name=”Azure Subscription”
export RG_Name=”Nome do Resource Group”
export Location=”Azure Region”
export Object_Name=”Nome do Objeto”

##Storage Accout

export Storage=”Nome do Storage Account” ##Exemplo storagevmdiag##
export SKU_Storage=”SKU do Storage Account” ##Exemplo Standard_LRS##

##Conjunto de Disponibiliade Availability Set

export Name_AV_SET=”AV-SET”-“Nome do Conjunto de Disponibilidade”
export Fault_Domain=”3″
export Update_Domain=”20″

##Network Security Group NSG

export NSG_Name=”Nome do NSG” ##Exemplo NSG-VM-Frontend##

##Vnet Existente (Variáveis para utilizar Vnet Existente)

export RG_Vnet=”Nome do Resurce Goup onde encontra-se a Vnet existente”
export Subnet_Name=”Nome da subnet existente”
export Vnet_Name=”Nome da Vnet existente”

##Variáveis de Rede (Obrigatório)

export NIC_Name=”Nome da interface de rede”
export Accelerated=”False ou true”

##Variavel para criacao da VM (Obrigatório)

export Image_SO=”CentOS”
export VM_Name=”Nome do servidor”
export User_Name=”azroot”
export key_PUB=”Local da chave publica” ##Exemplo /script/key/chave_publica.pub## caminho absoluto
export Size=”Tier da VM”
export SKU_STG=”Sku do Disco” ## Disco ## Exemplo Standard_LRS###

##Variaveis TAGs (Não Obrigatório)

export Costacenter=”Centro de Custos”
export Value_Costcenter=”Numero do centos de custo”
export Environment=”Environment”
export Environment_Value=”Ambiente” ##’Desenvolvimento’-‘Homologação’-‘Produção’##
export Depto=”Departamento” ##Squad-Team-Time##
export Depto_Value=”Nome do Departamento” ##infra-cartões-telecom

###Execução do Script

###Selecionar subscription

az account set –subscription “${Subscription_Name}”

###Criando Resource Group

az group create -n “${RG_Name}” -l “${Location}” –tags “${Costacenter}”=”${Value_Costcenter}” “${Environment}”=”${Environment_Value}” “${Depto}”=”${Depto_Value}”

###Criando Storage Accout

az storage account create -g “${RG_Name}” -n “${Storage}” -l “${Location}” –sku “${SKU_Storage}” –tags “${Costacenter}”=”${Value_Costcenter}” “${Environment}”=”${Environment_Value}” “${Depto}”=”${Depto_Value}”

###Criando Network Security Group NSG

az network nsg create -g “${RG_Name}” -n “${NSG_Name}” -l “${Location}” –tags “${Costacenter}”=”${Value_Costcenter}” “${Environment}”=”${Environment_Value}” “${Depto}”=”${Depto_Value}”

###Criar Grupo de Disponibilidade

az vm availability-set create -g “${RG_Name}” -n “${Name_AV_SET}” –platform-fault-domain-count “${Fault_Domain}” –platform-update-domain-count “${Update_Domain}” -l “${Location}” –tags “${Costacenter}”=”${Value_Costcenter}” “${Environment}”=”${Environment_Value}” “${Depto}”=”${Depto_Value}”

###Declarando variável para utilizar Vnet existente (Obrigatório)

SUBNET_ID001=$(az network vnet subnet show –name “${Subnet_Name}” –vnet-name “${Vnet_Name}” -g “${RG_Vnet}” –query id –output tsv)
export IPConfig_Name=”ipconfig1″

###Criando NIC (Interface de rede)

az network nic create –name “${NIC_Name}” -g “${RG_Name}” –subnet $SUBNET_ID001 –accelerated-networking “${Accelerated}” –network-security-group “${NSG_Name}” –tags “${Costacenter}”=”${Value_Costcenter}” “${Environment}”=”${Environment_Value}” “${Depto}”=”${Depto_Value}”

###Declaranado Variaveis para Fixar IP

NIC_ID001=$(az network nic show –name “${NIC_Name}” -g “${RG_Name}” –query id –output tsv)

###Declarando varivel para utilizar IP Fixo existente (Obrigatório)

IP_ID001=$(az network nic ip-config show -g “${RG_Name}” -n “${IPConfig_Name}” –nic-name “${NIC_Name}” –query privateIpAddress –output tsv)

###Fixando IP na interface de rede#Fixando IP

az network nic ip-config update -g “${RG_Name}” –nic-name “${NIC_Name}” -n “${IPConfig_Name}” –private-ip-address $IP_ID001

###Criando Virtual Machine CentOS

az vm create –name “${VM_Name}” -g “${RG_Name}” -l “${Location}” –availability-set “${Name_AV_SET}” –boot-diagnostics-storage “${Storage}” –image “${Image_SO}” –nics $NIC_ID001 –admin-username “${User_Name}” –ssh-key-values “${key_PUB}” –size “${Size}” –storage-sku “${SKU_STG}”

Links de referencia

https://docs.microsoft.com/en-us/cli/azure/vm/image?view=azure-cli-latest
https://docs.microsoft.com/en-us/azure/virtual-machines/windows/cli-ps-findimage
https://docs.microsoft.com/pt-br/cli/azure/
https://docs.microsoft.com/en-us/cli/azure/vm?view=azure-cli-latest#az_vm_create
https://docs.microsoft.com/en-us/rest/api/compute/virtual-machines/create-or-update#osprofile
https://docs.microsoft.com/pt-br/azure/virtual-machines/availability-set-overview
https://docs.microsoft.com/pt-br/azure/virtual-network/network-security-groups-overview

Link para geração da chave
https://charlessantana.com.br/2021/10/20/criando-chave-publica-e-private-com-puttygen/