Microsoft Azure est l'une des plus grandes plates-formes cloud du monde. Même malgré mon manque de sympathie pour la société qui l'a créée, je dois admettre que la plate-forme possède un certain nombre d'équipements par rapport à ses concurrents. Mais il n'y a pas de baril de miel sans une mouche dans la pommade, et cette cuillère dans Microsoft Azure est le nom des composants du système. Si renommer un composant dans AWS se fait en deux clics, alors dans Azure, les noms sont étroitement liés aux composants, et les modifier sans danser avec un tambourin est parfois impossible. Par conséquent, il est très important lors de l'utilisation d'Azure de créer initialement la structure correcte.

Essayons donc dans Microsoft Azure de créer une machine virtuelle avec le nom server-01 et les paramètres par défaut. La figure suivante montre clairement le désordre que nous avons à la fin.

Si tout vous convient ici, alors vous ne pouvez pas lire plus loin. Eh bien, si vous, comme moi, aimez la commande totale dans l'administration, je risque de proposer un beau schéma de dénomination pour les composants Microsoft Azure, que j'utilise depuis quelques années.
Ce schéma vous permet de mettre l'ensemble du système sous la forme unifiée suivante:
{Groupe de composants} __ {Élément}{Composant} - {Numéro} __ {Élément} - {Numéro}Alors commençons ...
Ajouter un groupe de ressourcesResource groups >> +Add Resource group name: servers
Créer un réseau virtuel et un sous-réseauPar défaut, Microsoft Azure étend le sous-réseau sur l'ensemble du réseau virtuel. Ce n'est pas très pratique, car si nécessaire, il sera très difficile d'ajouter de nouveaux sous-réseaux (par exemple, un sous-réseau VPN). Par conséquent, je donne généralement les deux derniers octets (masque 16) pour le réseau virtuel et pour le sous-réseau - le dernier octet (masque 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
Les premières adresses du sous-réseau (10.0.0.01 ... 03) sont utilisées par Azure pour répondre à ses besoins, j'ai donc déplacé les adresses professionnelles vers une plage supérieure à 100. Ainsi, le numéro de serveur correspondra au dernier chiffre de l'adresse IP: serveur-01 = 10.0.0.101, serveur-02 = 10.0.0.102, serveur-43 = 10.0.0.143, etc.
Adresse externe et groupe de sécuritéS'il est prévu que la machine virtuelle regarde à l'extérieur, créez une adresse publique et un groupe de sécurité.
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
Dans Azure, un groupe de sécurité peut être créé pour une seule machine et le sous-réseau dans son ensemble. Selon la variante, les noms varient.
Network security groups >> +Add
Option de groupe de sécurité pour un seul hôte:
Name: server-01__security-group Network interfaces >> +Associate: server-01__ip-private-01
Groupe de sécurité pour le sous-réseau:
Name: servers__network-security-group Subnets >> +Associate: Virtual network: servers__network Subnet: default
ConduireMalheureusement, Azure ne vous permet pas de créer des disques avec des noms arbitraires, donc ici, vous devrez faire une solution de contournement en créant une machine virtuelle fictive, puis utiliser son disque comme un blanc pour créer une machine qui fonctionne.
Créer une machine virtuelle factice 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
Après avoir créé une machine factice, vous pouvez supprimer tous les composants (y compris la machine elle-même) marqués du suffixe raw, à l'exception du disque.
Nous supprimons un instantané d'un disque Disks >> disk server-01-raw_OsDisk_... >> +Create snapshot Name: server-01-raw-snapshot
Sur la base de l'instantané, créez un nouveau disque de travail:
Disks >> +Add Name: server-01__disk-01 Source type: Snapshot Source snapshot: server-01-raw-snapshot
Nous déployons la machine de travail sur la base d'un nouveau disque 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 réseauAutre omission de Microsoft - lors de la création d'une machine virtuelle à partir d'un disque dans l'interface graphique, il n'y a aucun moyen d'y attacher l'interface réseau précédemment créée. Par conséquent, nous arrêtons la machine, supprimons l'interface réseau et y attachons celle que nous avons créée ci-dessus.
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
Élimination des déchetsLa touche finale est l'élimination des débris laissés par les manipulations que nous avons faites.
Supprimer:
interface réseau serveur-01982,
groupe de sécurité server-01-nsg,
conduire à partir d'une machine factice: server-01-raw_OsDisk ...
instantané server-01-raw-snapshot
Voici le résultat:

CLI
Vous avez probablement déjà remarqué qu'apporter de la beauté à Azure est une tâche plutôt pénible. Mais tout est grandement simplifié si vous utilisez la ligne de commande (CLI). Microsoft Azure fournit la CLI pour sa console native PowerShell et Linux. Cette dernière option sera décrite ci-dessous.
Identifiant:
az login -u AzureUserName
Obtenez une liste des emplacements disponibles
az account list-locations
Obtenez une liste des tailles de machines virtuelles:
az vm list-sizes --location locationName
Nous définissons la liste des paramètres du réseau et de la machine virtuelle (dans toutes les commandes suivantes, ces données seront transmises via des 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"
Créez un groupe de ressources:
az group create --location ${location} --name ${resource_group}
Créez un réseau virtuel et un sous-réseau:
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}
Créez une interface réseau:
az network nic create --resource-group ${resource_group} --location ${location} --name ${name}${interface_suffix} --subnet ${subnet} --vnet-name ${virt_network} --private-ip-address ${ip}
Créez une machine virtuelle factice:
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}
Normaliser le disque:
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}
Nous supprimons la machine factice et déployons celle qui fonctionne:
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}
Supprimez le disque factice:
az disk delete --resource-group ${resource_group} --name ${disk_old} --yes
Automatisation
Pour automatiser le processus de déploiement de machines virtuelles dans le cloud Microsoft Azure, j'ai combiné toutes les commandes ci-dessus dans un script bash azure-create-vm.sh, qui peut être extrait de
Github . Ouvrez le script dans n'importe quel éditeur de texte, entrez vos données et vous pouvez déployer des machines virtuelles avec de beaux noms en appuyant sur quelques touches.