Microsoft Azure es una de las plataformas en la nube más grandes del mundo. Incluso a pesar de mi falta de simpatía por la corporación que lo hizo, debo admitir que la plataforma tiene una serie de servicios en comparación con sus competidores. Pero no hay barril de miel sin una mosca en la pomada, y esta cuchara en Microsoft Azure es el nombre de los componentes del sistema. Si cambiar el nombre de un componente en AWS es cuestión de dos clics, en Azure los nombres están estrechamente vinculados a los componentes, y cambiarlos sin bailar con una pandereta a veces es imposible. Por lo tanto, es muy importante cuando se trabaja con Azure crear inicialmente la estructura correcta.

Entonces, intentemos en Microsoft Azure para crear una máquina virtual con el nombre server-01 y la configuración predeterminada. La siguiente figura muestra claramente el desorden que tenemos al final.

Si todo te conviene aquí, entonces no puedes seguir leyendo. Bueno, si a usted, como a mí, le gusta el pedido total en la administración, entonces me arriesgo a proponer un hermoso esquema de nombres para los componentes de Microsoft Azure, que he estado usando durante los últimos años.
Este esquema le permite llevar todo el sistema a la siguiente forma unificada:
{Grupo de componentes} __ {Elemento}{Componente} - {Número} __ {Elemento} - {Número}Entonces, comencemos ...
Agregar un grupo de recursosResource groups >> +Add Resource group name: servers
Crear una red virtual y subredDe manera predeterminada, Microsoft Azure expande la subred en toda la red virtual. Esto no es muy conveniente, ya que si es necesario será muy difícil agregar nuevas subredes (por ejemplo, una subred VPN). Por lo tanto, generalmente doy los dos últimos octetos (máscara 16) para la red virtual y para la subred, el ú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
Azure utiliza las primeras direcciones de la subred (10.0.0.01 ... 03) para satisfacer sus necesidades, por lo que moví las direcciones de trabajo a un rango superior a 100. Por lo tanto, el número del servidor corresponderá al último dígito de la dirección IP: server-01 = 10.0.0.101, servidor-02 = 10.0.0.102, servidor-43 = 10.0.0.143, etc.
Dirección externa y grupo de seguridadSi se planea que la máquina virtual mirará hacia afuera, cree una dirección pública y un grupo de seguridad.
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
En Azure, se puede crear un grupo de seguridad para una sola máquina y la subred en su conjunto. Dependiendo de la variante, los nombres variarán.
Network security groups >> +Add
Opción de grupo de seguridad para un solo host:
Name: server-01__security-group Network interfaces >> +Associate: server-01__ip-private-01
Grupo de seguridad para subred:
Name: servers__network-security-group Subnets >> +Associate: Virtual network: servers__network Subnet: default
ConducirDesafortunadamente, Azure no le permite crear discos con nombres arbitrarios, por lo que aquí deberá hacer una solución alternativa mediante la creación de una máquina virtual ficticia y luego usar su disco en blanco para crear una máquina que funcione.
Crear una máquina virtual ficticia 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
Después de crear una máquina ficticia, puede eliminar todos los componentes (incluida la máquina misma) marcados con el sufijo raw, excepto el disco.
Eliminamos una instantánea de un disco Disks >> disk server-01-raw_OsDisk_... >> +Create snapshot Name: server-01-raw-snapshot
Según la instantánea, cree un nuevo disco de trabajo:
Disks >> +Add Name: server-01__disk-01 Source type: Snapshot Source snapshot: server-01-raw-snapshot
Implementamos la máquina de trabajo sobre la base de un nuevo 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 redOtra omisión de Microsoft: al crear una máquina virtual desde un disco en la GUI, no hay forma de adjuntarle la interfaz de red creada anteriormente. Por lo tanto, detenemos la máquina, eliminamos la interfaz de red y adjuntamos la que creamos anteriormente.
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
Eliminación de basuraEl toque final es la eliminación de los restos de las manipulaciones que hicimos.
Eliminar:
interfaz de red del servidor-01982,
grupo de seguridad server-01-nsg,
conducir desde una máquina ficticia: server-01-raw_OsDisk ...
snapshot server-01-raw-snapshot
Aquí está el resultado:

CLI
Probablemente ya haya notado que llevar belleza a Azure es una tarea bastante problemática. Pero todo se simplifica enormemente si usa la línea de comando (CLI). Microsoft Azure proporciona una CLI tanto para su consola PowerShell nativa como para Linux. La última opción se describirá a continuación.
Iniciar sesión:
az login -u AzureUserName
Obtenga una lista de ubicaciones disponibles
az account list-locations
Obtenga una lista de tamaños de máquinas virtuales:
az vm list-sizes --location locationName
Establecemos la lista de parámetros de red y máquina virtual (en todos los comandos posteriores, estos datos se transmitirán a través de variables):
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"
Crear un grupo de recursos:
az group create --location ${location} --name ${resource_group}
Cree una red virtual y una subred:
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}
Crear una interfaz de red:
az network nic create --resource-group ${resource_group} --location ${location} --name ${name}${interface_suffix} --subnet ${subnet} --vnet-name ${virt_network} --private-ip-address ${ip}
Crear una máquina virtual ficticia:
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}
Normalizar el 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}
Eliminamos la máquina ficticia e implementamos la que funciona:
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}
Eliminar el disco ficticio:
az disk delete --resource-group ${resource_group} --name ${disk_old} --yes
Automatización
Para automatizar el proceso de implementación de máquinas virtuales en la nube de Microsoft Azure, combiné todos los comandos anteriores en un script bash azure-create-vm.sh, que se puede tomar de
Github . Abra la secuencia de comandos en cualquier editor de texto, ingrese sus datos y puede implementar máquinas virtuales con hermosos nombres presionando algunas teclas.