Bela estrutura de componentes na nuvem do Microsoft Azure

O Microsoft Azure é uma das maiores plataformas de nuvem do mundo. Mesmo apesar da minha falta de simpatia pela corporação que a criou, devo admitir que a plataforma possui várias comodidades em comparação com seus concorrentes. Mas não há barril de mel sem uma mosca na pomada, e essa colher no Microsoft Azure é o nome dos componentes do sistema. Se mudar o nome de um componente na AWS com apenas dois cliques, os nomes do Azure estão fortemente vinculados aos componentes e, às vezes, é impossível alterá-los sem dançar com um pandeiro. Portanto, é muito importante ao trabalhar com o Azure criar inicialmente a estrutura correta.

imagem

Então, vamos tentar no Microsoft Azure criar uma máquina virtual com o nome server-01 e configurações padrão. A figura a seguir mostra claramente a bagunça que temos no final.

imagem

Se tudo lhe convier aqui, você não poderá ler mais. Bem, se você, como eu, gosta da ordem total na economia administrada, arrisco-me a propor um belo esquema de nomeação para componentes do Microsoft Azure, que venho usando nos últimos anos.

Esse esquema permite trazer todo o sistema para o seguinte formato unificado:
{Grupo de componentes} __ {Elemento}
{Componente} - {Número} __ {Elemento} - {Número}

Então, vamos começar ...

Adicionar um grupo de recursos

Resource groups >> +Add Resource group name: servers 

Crie uma rede virtual e sub-rede

Por padrão, o Microsoft Azure expande a sub-rede por toda a rede virtual. Isso não é muito conveniente, pois, se necessário, será muito difícil adicionar novas sub-redes (por exemplo, uma sub-rede VPN). Portanto, geralmente dou os dois últimos octetos (máscara 16) para a rede virtual e para a sub-rede - o último octeto (máscara 24).

 Virtual networks >> +Add Name: servers__network Address space: 10.0.0.0/16 Subnet: Name: default Address range: 10.0.0.0/24 Network interfaces: +Add Name: server-01__ip-private-01 Virtual network: servers__network Subnet: default Private IP address: Static/10.0.0.101 

Os primeiros endereços da sub-rede (10.0.0.01 ... 03) são usados ​​pelo Azure para atender às suas necessidades, então mudei os endereços de trabalho para um intervalo acima de 100. Portanto, o número do servidor corresponderá ao último dígito do endereço IP: server-01 = 10.0.0.101, servidor-02 = 10.0.0.102, servidor-43 = 10.0.0.143, etc.

Endereço externo e grupo de segurança

Se for planejado que a máquina virtual olhe para fora, crie um endereço público e um grupo de segurança.

 Public IP addresses: +Add Name: server-01__ip-public-01 IP address assignment: Static Public IP addresses >>  server-01__ip-public-01 >> Associate: Resource type >> Network interface: server-01__ip-private-01 

No Azure, um grupo de segurança pode ser criado para uma única máquina e a sub-rede como um todo. Dependendo da variante, os nomes variam.

 Network security groups >> +Add 

Opção de grupo de segurança para um único host:

  Name: server-01__security-group Network interfaces >> +Associate: server-01__ip-private-01 

Grupo de segurança para sub-rede:

  Name: servers__network-security-group Subnets >> +Associate: Virtual network: servers__network Subnet: default 

Drive

Infelizmente, o Azure não permite que você crie discos com nomes arbitrários; portanto, você precisará executar uma solução alternativa através da criação de uma máquina virtual fictícia e, em seguida, usar seu disco como um espaço em branco para criar uma máquina em funcionamento.

Crie uma máquina virtual fictícia

 Virtual machines >> +Add Basics: Name: server-01-raw VM disk type: Premium SSD Username: your-name SSH public key: your-public-key Settings: Availability set: None Network: servers__network Subnet: default Public IP address: None Select public inbound ports: No public inbound ports Monitoring: Disabled 

Após criar uma máquina fictícia, você pode remover todos os componentes (incluindo a própria máquina) marcados com o sufixo bruto, exceto o disco.

Removemos um instantâneo de um disco

 Disks >>  disk server-01-raw_OsDisk_... >> +Create snapshot Name: server-01-raw-snapshot 

Com base no instantâneo, crie um novo disco de trabalho:

 Disks >> +Add Name: server-01__disk-01 Source type: Snapshot Source snapshot: server-01-raw-snapshot 

Implementamos a máquina de trabalho com base em um novo disco

 Disks >>  server-01__disk-01 >> + Create VM Basics: Name: server-01 Settings: Availability set: None Network: servers__network Subnet: default Public IP address: None Select public inbound ports: No public inbound ports Monitoring: Disabled 

Interfaces de rede

Outra omissão da Microsoft - ao criar uma máquina virtual a partir de um disco na GUI, não há como conectar a interface de rede criada anteriormente a ela. Portanto, paramos a máquina, excluímos a interface de rede e anexamos a que criamos acima a ela.

 Virtual machines >>  VM server-01 >> Stop Virtual machines >>  VM server-01 >> Networking: Attach network interface >> server-01__ip-private-01 Detach network interface >> server-01982 

Triturador de lixo

O toque final é a remoção de detritos que sobraram das manipulações que fizemos.

Excluir:

interface de rede server-01982,
grupo de segurança server-01-nsg,
dirigir de uma máquina fictícia: server-01-raw_OsDisk ...
snapshot server-01-raw-snapshot

Aqui está o resultado:

imagem

CLI


Você provavelmente já percebeu que trazer beleza ao Azure é uma tarefa bastante problemática. Mas tudo é bastante simplificado se você usar a linha de comando (CLI). O Microsoft Azure fornece a CLI para seu console nativo do PowerShell e Linux. A última opção será descrita abaixo.

Login:

 az login -u AzureUserName 

Obtenha uma lista dos locais disponíveis

 az account list-locations 

Obtenha uma lista de tamanhos de máquinas virtuais:

 az vm list-sizes --location locationName 

Definimos a lista de parâmetros de rede e máquina virtual (em todos os comandos subseqüentes, esses dados serão transmitidos por meio de variáveis):

 location="westindia" resource_group="servers" virt_network="servers__network" virt_network_range="10.0.0.0/16" subnet="default" subnet_range="10.0.0.0/24" user="username" ssh_key="ssh-public-key" name="server-01" image="UbuntuLTS" ip="10.0.0.101" interface_suffix="__ip-private-01" disk_suffix="__disk-01" size="Standard_B1s" ### SSD = "Premium_LRS"; HDD = "Standard_LRS" storage_type="Premium_LRS" 

Crie um grupo de recursos:

 az group create --location ${location} --name ${resource_group} 

Crie uma rede virtual e sub-rede:

 az network vnet create --location ${location} --resource-group ${resource_group} --name ${virt_network} --address-prefixes ${virt_network_range} 

 az network vnet subnet create --resource-group ${resource_group} --vnet-name ${virt_network} --name ${subnet} --address-prefix ${subnet_range} 

Crie uma interface de rede:

 az network nic create --resource-group ${resource_group} --location ${location} --name ${name}${interface_suffix} --subnet ${subnet} --vnet-name ${virt_network} --private-ip-address ${ip} 

Crie uma máquina virtual fictícia:

 az vm create --name ${name} --admin-username ${user} --ssh-key-value "${ssh_key}" --resource-group ${resource_group} --location ${location} --image ${image} --size ${size} --nics ${name}${interface_suffix} --storage-sku ${storage_type} 

Normalize o disco:

 az vm stop --name ${name} --resource-group ${resource_group} disk_old=$(az vm get-instance-view --name ${name} --resource-group ${resource_group} | grep -o "${name}_OsDisk[0-9a-z\_]\{1,\}" | head -1) az disk create --location ${location} --resource-group ${resource_group} --name ${name}${disk_suffix} --source ${disk_old} --sku ${storage_type} 

Removemos a máquina fictícia e implantamos a que está funcionando:

 az vm delete --name ${name} --resource-group ${resource_group} --yes az vm create --name ${name} --resource-group ${resource_group} --location ${location} --size ${size} --nics ${name}${interface_suffix} --attach-os-disk ${name}${disk_suffix} --os-type Linux ${availability_set_as_option} 

Exclua o disco fictício:

 az disk delete --resource-group ${resource_group} --name ${disk_old} --yes 

Automação


Para automatizar o processo de implantação de máquinas virtuais na nuvem do Microsoft Azure, combinei todos os comandos acima em um script bash azure-create-vm.sh, que pode ser obtido no Github . Abra o script em qualquer editor de texto, insira seus dados e você poderá implantar máquinas virtuais com nomes bonitos pressionando algumas teclas.

Source: https://habr.com/ru/post/pt422211/


All Articles