Remarques :

Migration d'une machine virtuelle Red Hat Enterprise Linux d'Amazon Web Services vers Oracle Cloud Infrastructure

Introduction

La migration d'Amazon Web Services (AWS) vers Oracle Cloud Infrastructure (OCI) est une entreprise de plus en plus fréquente pour de nombreuses entreprises, car OCI est un cloud de nouvelle génération qui permet aux applications de s'exécuter plus rapidement et en toute sécurité, à moindre coût.

La migration de machine virtuelle est souvent un élément central de cette entreprise, ce qui amène les clients à rechercher des conseils appropriés sur la façon de les migrer d'AWS vers OCI. De plus, pour de nombreuses entreprises, Linux constitue la majeure partie de leur infrastructure. Ce tutoriel est donc axé sur la migration de machines virtuelles exécutant l'une des distributions Linux les plus utilisées au monde (Red Hat Enterprise Linux) d'AWS vers OCI.

Ce tutoriel fournit aux clients des conseils sur les exigences de migration de machine virtuelle vers OCI et sur la préparation et la migration d'une machine virtuelle Red Hat Enterprise Linux d'AWS vers OCI, afin qu'elle puisse être lancée dans OCI en mode paravirtualisé. OCI permet également de lancer des instances en mode émulé, mais les machines virtuelles utilisant des périphériques paravirtualisés offrent des performances beaucoup plus rapides par rapport à l'exécution en mode émulé, avec des performances d'E/S de disque au moins six fois plus rapides.

Le processus global consiste à préparer la machine virtuelle dans AWS, à l'exporter vers Amazon Simple Storage Service (Amazon S3), à la transférer vers OCI Object Storage, à créer une image personnalisée dans OCI et à lancer une instance à partir de celle-ci. Le transfert d'images entre Amazon S3 et OCI Object Storage est effectué à l'aide de l'outil open source rclone. Si vous testez uniquement des images de petite taille, vous pouvez le faire manuellement. Nous vous recommandons d'utiliser rclone, car le transfert d'images est un processus beaucoup plus rapide et plus simple.

Objectifs

Prérequis

hypothèses

Tâche 1 : préparer l'infrastructure de transfert de données

Ce tutoriel utilise l'architecture de transfert de données suivante :

Tâche 1.1 : préparation des buckets Amazon S3 et OCI Object Storage

Dans cette tâche, nous allons créer un bucket dans :

Créez un bucket dans Amazon S3 avec les propriétés suivantes :

Dans les droits d'accès du bucket Amazon S3, attachez une liste de contrôle d'accès au bucket à l'aide de l'octroi correspondant à la région AWS sur laquelle vous travaillez, comme indiqué dans l'image suivante. Consultez les ID de compte canonique propres à la région du bénéficiaire ici : Export d'une instance en tant que machine virtuelle à l'aide de l'import/export de machine virtuelle.

S3 Pièce jointe ACL

Terminez cette tâche en créant un bucket dans OCI Object Storage sur le niveau de stockage standard. Il s'agit du bucket vers lequel vous transférerez ultérieurement l'image de machine virtuelle à partir d'Amazon S3.

Tâche 1.2 : installation et configuration de Rclone

Dans cette tâche, nous allons installer rclone dans une machine virtuelle exécutée sur OCI. Vous pouvez installer rclone sur votre machine locale si vous testez des machines virtuelles de petite taille et configurez rclone avec 2 télécommandes : Amazon S3 et OCI Object Storage.

  1. Installez rclone et SSH dans la machine virtuelle Oracle Linux dans OCI.

    sudo -v ; curl https://rclone.org/install.sh | sudo bash
    
  2. Effectuez la configuration des télécommandes dans rclone. Pour ce faire, démarrez une session de configuration du clone. Exécutez la commande suivante dans la ligne de commande.

    rclone config
    
  3. Pour la configuration à distance d'Amazon S3, entrez les informations suivantes.

    • Nom distant : saisissez un nom distant.
    • Type distant : sélectionnez le type S3.
    • Fournisseur : sélectionnez AWS.
    • access_key_id : entrez l'ID de clé d'accès associé à l'utilisateur AWS que vous avez décidé d'utiliser.
    • secret_access_key : entrez la clé d'accès secrète correspondant à l'ID de clé d'accès.
    • Région : sélectionnez la région AWS sur laquelle vous travaillez.
    • location_constraint : sélectionnez la contrainte d'emplacement qui correspond à la région Web Amazon sur laquelle vous travaillez. Pour certaines régions (telles que Francfort), ce champ peut être vide.
    • acl : sélectionnez private pour vous assurer que vous créez l'ACL prédéfinie la plus restreinte. Pour plus d'informations, reportez-vous à la section Canned ACL.
  4. Pour l'accès rclone à OCI Object Storage, ce tutoriel utilise un utilisateur OCI et des clés de signature d'API. Vous pouvez également utiliser des groupes dynamiques. Pour plus d'informations, reportez-vous à appel de services à partir d'une instance.

    Avant de configurer OCI Object Storage distant, nous effectuerons les opérations suivantes :

    Afin de comprendre les options d'authentification pour rclone auprès du fournisseur OCI, reportez-vous à Annonce de la prise en charge back-end native du fournisseur OCI Object Storage dans rclone.

  5. Le fichier de configuration OCI est généralement stocké en tant que fichier nommé config dans le répertoire.

    ~/.oci/
    
  6. Une fois que vous avez créé les clés de signature d'API OCI et le fichier de configuration OCI, vous pouvez configurer la télécommande OCI dans rclone. Exécutez la commande suivante pour démarrer la session de configuration.

    rclone config
    
  7. Entrez les informations suivantes pour la configuration distante OCI Object Storage.

    • Nom distant : entrez un nom distant.
    • Type : sélectionnez Oracle Object Storage.
    • Fournisseur : sélectionnez user_principal_auth (comme vous allez utiliser un utilisateur OCI et des clés de signature d'API), si vous utilisez un groupe dynamique, sélectionnez instance_principal_auth.
    • Namespace : entrez l'espace de noms de la location.
    • Compartiment : entrez l'identificateur Oracle Cloud (OCID) du compartiment de bucket OCI.
    • Région : entrez la région dans laquelle vous travaillez dans OCI.
    • Adresse : laissez le champ vide ou entrez l'adresse au format suivant : https://<namespace>.objectstorage.<region-code>.oci.customer-oci.com/n/<namespace>.
  8. Vérifiez le fichier de configuration distant rclone à l'aide de la commande suivante.

    cat ~/.config/rclone/rclone.conf
    

Tâche 2 : préparer le volume d'initialisation de machine virtuelle source

Tâche 2.1 : exécution d'un instantané obligatoire du volume d'initialisation de machine virtuelle AWS

Effectuez un instantané du volume d'initialisation de machine virtuelle AWS. Cette opération est obligatoire avant de démarrer une activité de configuration de volume d'initialisation.

Tâche 2.2 : activer la console série

Les connexions à la console série permettent à un utilisateur de dépanner une machine virtuelle, en effectuant des activités telles que la modification des fichiers de configuration système et la réinitialisation des mots de passe. En règle générale, pour préparer une machine virtuelle pour la console série, le fichier du programme d'initialisation GRUB doit être configuré. Ce fichier se trouve dans /etc/default/grub.

Les paramètres de configuration GRUB les plus importants sont les suivants :

- GRUB_TIMEOUT_STYLE: make sure it is commented if its value is "hidden"; alternatively, change it to "menu"
- GRUB_TIMEOUT: make sure it is higher than 0 to allow boot mode selection without skipping directly to the default option. Specify this value in both files.
- GRUB_CMDLINE_LINUX: make sure "console=tty1 console=ttyS0, 115200" is appended to it
- GRUB_TERMINAL: make sure its value is "serial console"
- GRUB_SERIAL_COMMAND: make sure its value is "serial -- unit=0 --speed=115200"
  1. Ouvrez /etc/default/grub.

    sudo vi /etc/default/grub
    

    Modifiez le fichier pour qu'il ressemble au fichier affiché dans l'image suivante.

    Modification grub

  2. Après avoir modifié le fichier, exécutez la commande suivante pour vous assurer que le programme d'initialisation GRUB est correctement mis à jour.

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

Tâche 2.3 : vérifier les pilotes de paravirtualisation

Pour importer une machine virtuelle vers OCI afin qu'elle puisse être lancée en mode paravirtualisé, les pilotes VirtIO de paravirtualisation doivent être présents dans l'image. Dans cette tâche, nous allons vérifier à la fois le noyau et le système de fichiers temporaire initramfs pour confirmer la présence des pilotes. Notez que les systèmes d'exploitation basés sur Linux exécutant la version 3.4 ou ultérieure du noyau prennent en charge les pilotes paravirtualisés ; par conséquent, il vous suffit souvent de vérifier et de confirmer leur présence.

L'ensemble minimal de pilotes VirtIO requis inclut pci, scsi. Ces pilotes doivent être présents dans le noyau ou dans initramfs.

  1. Vérifiez le noyau de la machine virtuelle AWS à l'aide de la commande suivante.

    sudo grep -i virtio /boot/config-$(uname -r)
    

    vérifier le noyau

    Remarque : le pilote pci VirtIO est présent dans le noyau.

  2. Vérifiez le noyau de la machine virtuelle AWS à l'aide de la commande suivante.

    sudo lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
    

    vérifier initramfs

    Remarque : le pilote scsi VirtIO est présent dans initramfs.

  3. Si le volume d'initialisation de votre machine virtuelle ne dispose pas des pilotes, vous devrez reconstruire les initramfs avec dracut.

    sudo dracut -v -f --add-drivers “virtio virtio_pci virtio_scsi” /boot/initramfs-$(uname -r).img $(uname -r)
    

Tâche 2.4 : configurer les paramètres réseau

Pour la configuration réseau, vérifiez les points suivants :

Il existe plusieurs façons d'effectuer une configuration réseau sous Linux. Plus précisément dans RHEL, la configuration des connexions Ethernet peut être effectuée en modifiant les fichiers de configuration réseau dans /etc/sysconfig/network-scripts/ifcfg-eth0 ou à l'aide de NetworkManager. Ce tutoriel utilise ce dernier pour effectuer la configuration réseau nécessaire. Pour plus d'informations, reportez-vous à Configuration d'une connexion Ethernet.

  1. Exécutez l'outil de ligne de commande NetworkManager (nmcli) pour afficher un récapitulatif de la configuration réseau de la machine virtuelle.

    Récapitulatif de la configuration réseau

  2. Pour répertorier les connexions disponibles dans la machine virtuelle, exécutez la commande suivante.

    nmcli connection show
    

    Vous trouverez une liste de connexions. La machine virtuelle utilisée dans ce tutoriel dispose des connexions suivantes.

    vérifier les connexions

  3. Confirmez la connexion Ethernet associée à eth0 à l'aide du protocole DHCP (Dynamic Host Configuration Protocol).

    nmcli connection show <connection UUID>
    

    Faites défiler jusqu'à trouver le paramètre ipv4.method. Elle doit avoir la valeur auto.

    Confirmer DHCP

  4. Modifiez la connexion associée à l'interface eth0. Vous allez supprimer l'adresse MAC de la configuration d'interface à l'aide de la commande suivante.

    sudo nmcli connection modify <connection UUID> 802-3-ethernet.mac-address ''
    
  5. Appliquez ces modifications à l'aide de la commande suivante.

    sudo nmcli con up <connection UUID>
    
  6. En outre, vérifiez le répertoire /etc/udev/rules pour voir s'il existe des fichiers de règles udev contenant des règles codées en dur d'adresse MAC et supprimez-les. L'image AWS utilisée dans ce tutoriel contient un fichier de ce type 70-persistent-net.rules. Exécutez la commande suivante pour supprimer ce fichier.

    sudo rm /etc/udev/rules.d/70-persistent-net.rules
    

La configuration réseau est maintenant terminée. Vous pouvez confirmer en consultant le fichier /etc/sysconfig/network-scripts/ifcfg-eth0.

Tâche 3 : export d'une image de machine virtuelle vers Amazon S3

Cette tâche nécessite l'utilisation de la CLI AWS. Ce tutoriel utilise AWS CloudShell, car il ignore les tâches de configuration de la CLI AWS.

  1. Arrêtez la VM. Ouvrez AWS CloudShell et exécutez la commande suivante pour exporter l'image.

    aws ec2 create-instance-export-task --instance-id <instance-id> --target-environment vmware --export-to-s3-task DiskImageFormat=vmdk,ContainerFormat=ova,S3Bucket=<bucket name>
    
  2. Saisissez les informations suivantes .

    • Format d'image de disque : entrez VMDK car il s'agit du seul format d'export AWS pris en charge par OCI.
    • Format de conteneur : entrez OVA pour combiner l'image de disque avec les métadonnées relatives à la machine virtuelle. Vous pouvez également exporter ce paramètre.
    • Environnement cible : entrez vmware, car il s'agit du seul environnement cible pris en charge dans OCI.
  3. Vous pouvez surveiller l'état de la tâche d'export en exécutant la commande suivante dans AWS CloudShell.

    aws ec2 describe-export-tasks --export-task-ids <export task id>s
    

    Lorsque vous lancez la tâche pour la première fois, elle est à l'état Actif. Une fois terminé, vous le trouverez à l'état Terminé.

Tâche 4 : transfert d'image vers OCI Object Storage

Connectez-vous via SSH à la machine virtuelle OCI dans laquelle rclone a été configuré dans la tâche 1.2. Effectuez la copie de l'image exportée du bucket AWS S3 vers le bucket OCI Object Storage.

rclone copy <aws-remote>:<bucket>/<imagefile> <oci-remote>:<bucket> -vv

Tâche 5 : créer une image personnalisée dans OCI et lancer l'instance

  1. Dans la console OCI, accédez à Images personnalisées sur le service Compute et sélectionnez Importer l'image.

  2. Saisissez les informations suivantes .

    • Compartiment : sélectionnez le compartiment dans lequel créer l'image personnalisée.
    • Nom : entrez le nom de l'image personnalisée.
    • Système d'exploitation : sélectionnez RHEL.
    • Source : effectuez une importation à partir d'un bucket Object Storage. Sélectionnez le bucket que vous avez configuré dans la tâche 1.1.
    • Nom d'objet : sélectionnez l'image que vous avez transférée à partir d'Amazon S3.
    • Mode de lancement : sélectionnez le mode paravirtualisé.
  3. Cliquez sur Import d'image pour lancer l'import d'image.

  4. Une fois l'image créée, vous êtes prêt à lancer une instance à partir de celle-ci. Sur la page de détails de l'image personnalisée, sélectionnez Créer une instance et entrez les informations suivantes.

    • Nom : saisissez le nom de l'instance.
    • Compartiment : sélectionnez le compartiment dans lequel lancer l'instance.
    • Domaine de disponibilité.
    • VCN et Sous-réseau. Dans le cadre de ce tutoriel, vous pouvez utiliser un sous-réseau public pour ignorer la connectivité VPN.
    • Clés SSH : vous avez deux options : générer de nouvelles clés SSH ou utiliser le même ensemble de clés que celui utilisé dans AWS. Si vous souhaitez continuer à utiliser le même ensemble de clés, téléchargez la même clé publique que celle utilisée dans AWS pour la machine virtuelle source. En supposant que votre clé publique AWS est au format de clé .pem, remplacez-la par .pem.pub afin de la télécharger vers l'instance OCI. Cela vous permettra de continuer à utiliser la même clé privée pour SSH dans la machine virtuelle.
  5. Lancez la machine virtuelle. Une fois le provisionnement terminé, vous pouvez vous y connecter. Notez que l'utilisateur avec lequel vous êtes connecté est ec2-user, et non opc.

    ssh -i pathToKey/keyfile ec2-user@<publicIp>
    

Remerciements

Ressources de formation supplémentaires

Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.