Préparation d'une machine virtuelle CentOS pour Azure

Attention

Cet article fait référence à CentOS, une distribution Linux proche de l’état EOL (fin du service). Faites le point sur votre utilisation et organisez-vous en conséquence. Pour obtenir plus d’informations, consultez l’aide sur la fin du service CentOS.

S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles

Apprenez à créer et à télécharger un disque dur virtuel Azure contenant un système d’exploitation Linux basé sur CentOS. Pour plus d’informations, consultez l’article suivant :

Prérequis

Cet article suppose que vous avez déjà installé un système d’exploitation CentOS (ou une distribution dérivée similaire) de Linux sur un disque dur virtuel. Plusieurs outils permettent de créer des fichiers .vhd. Citons par exemple une solution de virtualisation comme Hyper-V. Pour obtenir des instructions, consultez Installer le rôle Hyper-V et configurer une machine virtuelle.

Notes d'installation CentOS

  • Pour obtenir d’autres conseils sur la préparation de Linux pour Azure, consultez Notes générales sur l’installation de Linux.
  • Azure ne prend pas en charge le format VHDX, seulement le VHD fixe. Vous pouvez convertir le disque au format VHD en utilisant le gestionnaire Hyper-V ou la cmdlet convert-vhd. Si vous utilisez VirtualBox, sélectionnez Taille fixe par opposition à la taille par défaut allouée dynamiquement lorsque vous créez le disque.
  • Le module de noyau vfat doit être activé dans le noyau.
  • Quand vous installez le système Linux, nous vous recommandons d’utiliser les partitions standard plutôt que le gestionnaire de volumes logiques (LVM), qui constitue souvent le choix par défaut pour de nombreuses installations. L’utilisation de partitions permet d’éviter les conflits de noms LVM avec des machines virtuelles clonées, en particulier si un disque de système d’exploitation doit être attaché à une autre machine virtuelle identique à des fins de dépannage. Vous pouvez également utiliser LVM ou RAID sur des disques de données.
  • La prise en charge par le noyau du montage des systèmes de fichiers à fonction définis par l’utilisateur (UDF) est requise. Au premier démarrage sur Azure, la configuration d’approvisionnement est passée à la machine virtuelle Linux à l’aide d’un support au format UDF attaché à l’invité. L’agent Azure Linux ou cloud-init doit monter le système de fichiers UDF pour lire sa configuration et approvisionner la machine virtuelle.
  • Les versions du noyau Linux antérieures à la version 2.6.37 ne prennent pas en charge NUMA sur Hyper-V avec des machines virtuelles de taille supérieure. Ce problème affecte principalement les distributions antérieures utilisant le noyau Centos 2.6.32 en amont et a été corrigé dans Centos 6.6 (kernel-2.6.32-504). Pour les systèmes exécutant des noyaux personnalisés antérieurs à la version 2.6.37 ou des noyaux basés sur RHEL (Red Hat Enterprise Linux) antérieurs à la version 2.6.32-504, le paramètre de démarrage numa=off doit être défini sur la ligne de commande du noyau dans grub.conf. Pour plus d’informations, consultez l’article KB 436883 sur Red Hat.
  • Ne configurez pas une partition d’échange sur le disque du système d’exploitation.
  • Tous les VHD sur Azure doivent avoir une taille virtuelle alignée sur 1 Mo. Lorsque vous convertissez un disque brut en disque dur virtuel, vous devez vérifier que la taille du disque brut est un multiple de 1 Mo avant la conversion. Pour plus d’informations, consultez les notes d’installation de Linux.

Remarque

Cloud-init >= 21.2 supprime la nécessité du module UDF. Toutefois, si le module UDF n’est pas activé, le CD-ROM n’est pas monté pendant l’approvisionnement, ce qui empêche l’application des données personnalisées. Une solution de contournement à cette situation consiste à appliquer les données personnalisées en utilisant les données utilisateur. Contrairement aux données personnalisées, les données utilisateur ne sont pas chiffrées. Pour plus d’informations, consultez Formats de données utilisateur.

CentOS 6.x

Important

CentOS 6 a atteint l’état EOL et n’est plus pris en charge par la communauté CentOS. Aucune autre mise à jour et aucun autre correctif de sécurité ne sera publié pour cette version, la rendant ainsi vulnérable aux risques de sécurité. Nous vous recommandons vivement d’effectuer une mise à niveau vers une version plus récente de CentOS pour garantir la sécurité et la stabilité de votre système. Pour obtenir une aide supplémentaire, consultez votre service informatique ou votre administrateur système.

  1. Dans le Gestionnaire Hyper-V, sélectionnez la machine virtuelle.

  2. Sélectionnez Connecter afin d’ouvrir une fenêtre de console pour la machine virtuelle.

  3. Dans CentOS 6, NetworkManager peut interférer avec l’agent Azure Linux. Désinstallez ce package :

    sudo rpm -e --nodeps NetworkManager
    
  4. Créez ou modifiez le fichier /etc/sysconfig/network, puis ajoutez le texte suivant :

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Créez ou modifiez le fichier /etc/sysconfig/network-scripts/ifcfg-eth0, puis ajoutez le texte suivant :

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Modifiez les règles udev pour éviter la génération de règles statiques pour les interfaces Ethernet. Ces règles peuvent poser des problèmes quand vous clonez une machine virtuelle dans Azure ou Hyper-V :

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
    
  7. Assurez-vous que le service réseau se lance au démarrage :

    sudo chkconfig network on
    
  8. Si vous voulez utiliser les miroirs OpenLogic hébergés dans les centres de données Azure, remplacez le fichier /etc/yum.repos.d/CentOS-Base.repo par les référentiels suivants. Cette action ajoute également le référentiel [openlogic] qui comprend des packages supplémentaires, notamment l’agent Azure Linux :

    [openlogic]
    name=CentOS-$releasever - openlogic packages for $basearch
    baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/
    enabled=1
    gpgcheck=0
    
    [base]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that might be useful
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    
    #contrib - packages by Centos Users
    [contrib]
    name=CentOS-$releasever - Contrib
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    

    Remarque

    La suite de cet article suppose que vous utilisez au moins le référentiel [openlogic], qui est utilisé pour installer l’agent Azure Linux.

  9. Ajoutez la ligne suivante à /etc/yum.conf :

    http_caching=packages
    
  10. Effacez les métadonnées yum actuelles et mettez à jour le système avec les derniers packages :

    sudo yum clean all
    

    À moins de créer une image pour une version antérieure de CentOS, nous vous recommandons de mettre à jour tous les packages vers la dernière version :

    sudo yum -y update
    

    Un redémarrage peut être nécessaire après l’exécution de cette commande.

  11. Facultatif : installez les pilotes pour Linux Integration Services (LIS).

    Important

    Cette étape est requise pour CentOS 6.3 et versions antérieures, et facultative pour les versions ultérieures.

    sudo rpm -e hypervkvpd  ## (might return an error if not installed, that's OK)
    sudo yum install microsoft-hyper-v
    

    Vous pouvez également suivre le les instructions d’installation manuelle sur la page de téléchargement des services d’intégration Linux (LIS) et installez le package RPM sur votre machine virtuelle.

  12. Installez l’agent Azure Linux et les dépendances. Démarrez et activez le service waagent :

    sudo yum install python-pyasn1 WALinuxAgent
    sudo service waagent start
    sudo chkconfig waagent on
    

    Le package WALinuxAgent supprime les packages NetworkManager et NetworkManager-gnome si cela n’a pas déjà été fait, comme décrit à l’étape 3.

  13. Modifiez la ligne de démarrage du noyau dans votre configuration grub pour y inclure d’autres paramètres de noyau pour Azure. Pour effectuer cette étape, ouvrez /boot/grub/menu.lst dans un éditeur de texte et vérifiez que le noyau par défaut comprend les paramètres suivants :

    console=ttyS0 earlyprintk=ttyS0 rootdelay=300
    

    Cette modification garantit également que tous les messages de la console sont envoyés au premier port série, ce qui peut aider le support Azure à résoudre les problèmes.

    Nous vous recommandons également de supprimer les paramètres suivants :

    rhgb quiet crashkernel=auto
    

    Le démarrage graphique et sans assistance n’est pas utile dans un environnement cloud où vous souhaitez que tous les journaux soient envoyés au port série. Vous pouvez laisser l’option crashkernel configurée si vous le souhaitez. Toutefois, ce paramètre réduit la quantité de mémoire disponible dans la machine virtuelle de 128 Mo ou plus, ce qui peut poser problème pour les tailles de machine virtuelle plus petites.

    Important

    CentOS 6.5 et versions antérieures doivent également définir le paramètre de noyau numa=off. Pour plus d’informations, consultez l’article KB 436883 sur Red Hat.

  14. Vérifiez que le serveur Secure Shell est installé et configuré pour être lancé au démarrage. Ce paramètre est généralement la valeur par défaut.

  15. Ne créez pas d’espace d’échange sur le disque du système d’exploitation.

    L’agent Azure Linux peut configurer automatiquement l’espace d’échange à l’aide du disque de ressources local attaché à la machine virtuelle une fois celle-ci approvisionnée sur Azure. Le disque de ressources local est un disque temporaire qui peut être vidé quand la machine virtuelle est déprovisionnée. Après avoir installé l’agent Azure Linux (voir l’étape précédente), modifiez en conséquence les paramètres suivants dans le fichier /etc/waagent.conf :

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
    
  16. Désapprovisionnez la machine virtuelle et préparez son approvisionnement sur Azure :

    sudo waagent -force -deprovision+user
    sudo export HISTSIZE=0
    

    Remarque

    Si vous migrez une machine virtuelle spécifique et que vous ne souhaitez pas créer d’image généralisée, ignorez l’étape de désapprovisionnement.

  17. Sélectionnez Action>Arrêter dans le Gestionnaire Hyper-V. Votre disque dur virtuel Linux est alors prêt pour chargement dans Azure.

CentOS 7.0+

Suivez les étapes des sections suivantes si vous utilisez CentOS 7.0+.

Modifications dans CentOS 7 (et les distributions dérivées)

La préparation d’une machine virtuelle CentOS 7 pour Azure est similaire à la préparation d’une machine virtuelle CentOS 6. Plusieurs différences significatives sont à noter :

  • Le package NetworkManager n’est plus en conflit avec l’agent Azure Linux. Ce package est installé par défaut et nous vous recommandons de ne pas le supprimer.

  • GRUB2 étant désormais utilisé comme programme de démarrage système (bootloader) par défaut, la procédure de modification des paramètres du noyau a donc changé. (Consultez la section « Étapes de configuration ».)

  • XFS est maintenant le système de fichiers par défaut. Vous pouvez toujours utiliser le système de fichiers ext4 si vous le souhaitez.

  • Étant donné que CentOS 8 Stream et versions ultérieures n’incluent plus network.service par défaut, vous devez l’installer manuellement :

    sudo yum install network-scripts
    sudo systemctl enable network.service
    

Étapes de configuration

  1. Dans le Gestionnaire Hyper-V, sélectionnez la machine virtuelle.

  2. Sélectionnez Connecter afin d’ouvrir une fenêtre de console pour la machine virtuelle.

  3. Créez ou modifiez le fichier /etc/sysconfig/network, puis ajoutez le texte suivant :

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Créez ou modifiez le fichier /etc/sysconfig/network-scripts/ifcfg-eth0, puis ajoutez le texte suivant :

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    NM_CONTROLLED=no
    
  5. Modifiez les règles udev pour éviter la génération de règles statiques pour les interfaces Ethernet. Ces règles peuvent poser des problèmes quand vous clonez une machine virtuelle dans Azure ou Hyper-V :

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Si vous souhaitez utiliser les miroirs OpenLogic hébergés dans les centres de données Azure, remplacez le fichier /etc/yum.repos.d/CentOS-Base.repo par les référentiels suivants. Cette action ajoute également le référentiel [openlogic] qui inclut des packages pour l’agent Azure Linux :

    [openlogic]
    name=CentOS-$releasever - openlogic packages for $basearch
    baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/
    enabled=1
    gpgcheck=0
    
    [base]
    name=CentOS-$releasever - Base
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #additional packages that might be useful
    [extras]
    name=CentOS-$releasever - Extras
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    

    Remarque

    La suite de cet article suppose que vous utilisez au moins le référentiel [openlogic], qui est utilisé pour installer l’agent Azure Linux.

  7. Effacez les métadonnées yum actuelles et installez toute mise à jour disponible :

    sudo yum clean all
    

    À moins de créer une image pour une version antérieure de CentOS, nous vous recommandons de mettre à jour tous les packages vers la dernière version :

    sudo yum -y update
    

    Un redémarrage peut être nécessaire après l’exécution de cette commande.

  8. Modifiez la ligne de démarrage du noyau dans votre configuration grub pour y inclure d’autres paramètres de noyau pour Azure. Pour effectuer cette étape, ouvrez /etc/default/grub dans un éditeur de texte et modifiez le paramètre GRUB_CMDLINE_LINUX. Par exemple :

    GRUB_CMDLINE_LINUX="rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    Cette modification garantit également que tous les messages de la console sont envoyés au premier port série, ce qui peut aider le support Azure à résoudre les problèmes. Cela désactive également les nouvelles conventions d’affectation de noms CentOS 7 pour les cartes réseau. Nous vous recommandons également de supprimer les paramètres suivants :

    rhgb quiet crashkernel=auto
    

    Le démarrage graphique et sans assistance n’est pas utile dans un environnement cloud où vous souhaitez que tous les journaux soient envoyés au port série. Vous pouvez laisser l’option crashkernel configurée si vous le souhaitez. Toutefois, ce paramètre réduit la quantité de mémoire disponible dans la machine virtuelle de 128 Mo ou plus, ce qui peut poser problème pour les tailles de machine virtuelle plus petites.

  9. Quand vous avez terminé de modifier /etc/default/grub, régénérez la configuration grub :

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

    Remarque

    Si vous chargez une machine virtuelle UEFI, la commande pour mettre à jour grub est grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg. De plus, le module de noyau vfat doit être activé dans le noyau. Sinon, l’approvisionnement échoue.

    Assurez-vous que le module udf est activé. La suppression ou la désactivation de ce module entraînera un échec du provisionnement ou du démarrage. (_Cloud-init >= 21.2 supprime la nécessité du module udf. Pour plus d’informations, lisez le haut du document.)

  10. Si vous générez l’image à partir de VMware, VirtualBox ou KVM, vérifiez que les pilotes Hyper-V sont inclus dans initramfs :

    1. Modifiez /etc/dracut.conf en y ajoutant le contenu suivant :

      add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
      
    2. Générez de nouveau initramfs :

      sudo dracut -f -v
      
  11. Installez l’agent Azure Linux et les dépendances pour les extensions de machine virtuelle Azure :

    sudo yum install python-pyasn1 WALinuxAgent
    sudo systemctl enable waagent
    
  12. Installez cloud-init pour gérer l’approvisionnement :

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
    • Configurez waagent pour cloud-init :
    sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=auto/g' /etc/waagent.conf
    sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
    sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
    
    sudo echo "Adding mounts and disk_setup to init stage"
    sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg
    sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg
    sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
    
    sudo echo "Allow only Azure datasource, disable fetching network setting via IMDS"
    sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
    datasource_list: [ Azure ]
    datasource:
        Azure:
            apply_network_config: False
    EOF
    
    if [[ -f /mnt/swapfile ]]; then
    echo Removing swapfile - RHEL uses a swapfile by default
    swapoff /mnt/swapfile
    rm /mnt/swapfile -f
    fi
    
    echo "Add console log file"
    cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF
    
    # This tells cloud-init to redirect its stdout and stderr to
    # 'tee -a /var/log/cloud-init-output.log' so the user can see output
    # there without needing to look on the console.
    output: {all: '| tee -a /var/log/cloud-init-output.log'}
    EOF
    
  13. Configuration de l’échange :

    1. Ne créez pas d’espace d’échange sur le disque du système d’exploitation.

      Auparavant, l’agent Azure Linux était utilisé pour configurer automatiquement l’espace d’échange à l’aide du disque de ressources local attaché à la machine virtuelle une fois celle-ci approvisionnée sur Azure. Toutefois, cloud-init gère désormais cette étape. Vous ne devez pas utiliser l’agent Linux pour formater le disque de ressources afin de créer le fichier d’échange. Modifiez les paramètres suivants dans /etc/waagent.conf de manière appropriée :

      sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
      sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
      
    2. Si vous souhaitez monter, formater et créer le fichier d’échange, vous pouvez, au choix :

      • Passer cette commande en tant que configuration cloud-init chaque fois que vous créez une machine virtuelle.

      • Utiliser une directive cloud-init intégrée à l’image pour effectuer cette étape chaque fois que la machine virtuelle est créée :

        sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
        sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF
        #cloud-config
        # Generated by Azure cloud image build
        disk_setup:
          ephemeral0:
            table_type: mbr
            layout: [66, [33, 82]]
            overwrite: True
        fs_setup:
          - device: ephemeral0.1
            filesystem: ext4
          - device: ephemeral0.2
            filesystem: swap
        mounts:
          - ["ephemeral0.1", "/mnt"]
          - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
        EOF
        
  14. Exécutez les commandes suivantes pour désapprovisionner la machine virtuelle et préparer son provisionnement sur Azure.

    Remarque

    Si vous migrez une machine virtuelle spécifique et que vous ne souhaitez pas créer d’image généralisée, ignorez l’étape de désapprovisionnement.

    sudo rm -f /var/log/waagent.log
    sudo cloud-init clean
    sudo waagent -force -deprovision+user
    sudo rm -f ~/.bash_history
    sudo export HISTSIZE=0
    
  15. Sélectionnez Action>Arrêter dans le Gestionnaire Hyper-V. Votre disque dur virtuel Linux est alors prêt pour le téléchargement dans Azure.

Vous êtes maintenant prêt à utiliser votre disque dur virtuel Linux CentOS pour créer des machines virtuelles dans Azure. S’il s’agit de votre premier chargement du fichier .vhd sur Azure, consultez Créer une machine virtuelle Linux à partir d’un disque personnalisé.