Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
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éparez une machine virtuelle Red Hat Enterprise Linux dans AWS pour la migration vers OCI.
-
Exportez la machine virtuelle préparée en tant qu'image vers Amazon S3.
-
Transférez l'image vers OCI et créez-en une instance.
Prérequis
-
Accès à un compte AWS qui peut créer ou possède déjà des clés d'API et a accès à Amazon S3 et Amazon Elastic Compute Cloud (Amazon EC2).
-
Accès à une location et à un compartiment OCI pour la migration d'image et le lancement d'instance.
-
Stratégies Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) pour :
-
Autorisez l'accès à OCI Object Storage.
-
Provisionnez une machine virtuelle dans OCI (pour la machine virtuelle de clonage et les machines virtuelles personnalisées basées sur une image).
-
Autorisez la création de clés d'API OCI.
-
hypothèses
-
Machine virtuelle AWS provisionnée avec une clé publique
pem
. -
La machine virtuelle AWS RHEL ne comporte que 1 volume : volume d'initialisation.
-
L'image AWS est exportable ; l'image Amazon Machine Image (AMI) utilisée dans ce tutoriel est l'image de plate-forme AWS pour RHEL
9.3.0
à partir de mars 2024. -
Connectivité SSH avec l'utilisateur fourni par défaut par AWS :
ec2-user
. -
Opérations de ligne de commande AWS effectuées sur AWS CloudShell. Vous pouvez également utiliser l'outil AWS CLI.
-
Machine virtuelle Oracle Linux provisionnée dans OCI et avec connectivité SSH à Amazon S3. Il s'agit de la machine virtuelle sur laquelle vous allez installer et configurer rclone pour le transfert d'images entre Amazon S3 et OCI Object Storage.
Tâche 1 : préparer l'infrastructure de transfert de données
Ce tutoriel utilise l'architecture de transfert de données suivante :
-
Transfert d'images via Internet entre Amazon S3 et OCI Object Storage effectué par rclone. Pour un déploiement adapté à la production, l'utilisation du VPN site à site Oracle Cloud Infrastructure ou de FastConnect est recommandée. Pour plus d'informations, reportez-vous à Connexion VPN à AWS et à FastConnect.
-
Cloner configuré avec l'authentification par principal d'utilisateur pour un accès sécurisé à Amazon S3 et OCI Object Storage.
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 :
- Amazon S3 pour les images à exporter.
- OCI Object Storage pour stocker les images de disque de machine virtuelle transférées à partir d'Amazon S3.
Créez un bucket dans Amazon S3 avec les propriétés suivantes :
- Liste de contrôle d'accès (ACL) activée. Nous devrons attacher une ACL personnalisée pour permettre l'exportation d'une image vers Amazon S3.
- Bloquer tout accès public.
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.
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.
-
Installez rclone et SSH dans la machine virtuelle Oracle Linux dans OCI.
sudo -v ; curl https://rclone.org/install.sh | sudo bash
-
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
-
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.
-
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 :
-
Créez des clés de signature d'API OCI pour que rclone s'authentifie dans OCI Object Storage et effectue le transfert de données d'image. Pour créer les clés de signature d'API et prendre note du répertoire dans lequel vous stockez les clés sur la machine virtuelle, car vous devrez les fournir dans le fichier de configuration OCI, reportez-vous à Procédure de génération d'une clé de signature d'API.
-
Créez un fichier de configuration OCI. Ce fichier de configuration requiert les clés de signature d'API OCI. Pour plus d'informations, reportez-vous à Fichier de configuration du kit SDK et de l'interface de ligne de commande.
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.
-
-
Le fichier de configuration OCI est généralement stocké en tant que fichier nommé
config
dans le répertoire.~/.oci/
-
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
-
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électionnezinstance_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>
.
-
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"
-
Ouvrez
/etc/default/grub
.sudo vi /etc/default/grub
Modifiez le fichier pour qu'il ressemble au fichier affiché dans l'image suivante.
-
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.
-
Vérifiez le noyau de la machine virtuelle AWS à l'aide de la commande suivante.
sudo grep -i virtio /boot/config-$(uname -r)
Remarque : le pilote
pci
VirtIO est présent dans le noyau. -
Vérifiez le noyau de la machine virtuelle AWS à l'aide de la commande suivante.
sudo lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
Remarque : le pilote
scsi
VirtIO est présent dans initramfs. -
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 :
- La machine virtuelle utilise DHCP.
- Toute référence d'adresse MAC codée en dur dans la configuration réseau est supprimée.
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.
-
Exécutez l'outil de ligne de commande NetworkManager (
nmcli
) pour afficher un récapitulatif de la configuration réseau de la machine virtuelle. -
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.
-
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 valeurauto
. -
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 ''
-
Appliquez ces modifications à l'aide de la commande suivante.
sudo nmcli con up <connection UUID>
-
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 type70-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.
-
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>
-
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.
-
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
-
Dans la console OCI, accédez à Images personnalisées sur le service Compute et sélectionnez Importer l'image.
-
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é.
-
Cliquez sur Import d'image pour lancer l'import d'image.
-
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.
-
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>
Liens connexes
-
Export d'une instance en tant que machine virtuelle à l'aide de l'import/export de machine virtuelle
-
Autorisation de l'accès via la console série pour les images Linux importées
-
Dépannage des instances à l'aide des connexions à la console pour une instance
-
Annonce de la prise en charge native du back-end du fournisseur OCI Object Storage dans rclone
-
Déplacer des données vers Object Storage dans le cloud en utilisant rclone
-
Migration de données vers Oracle Cloud Infrastructure Object Storage à l'aide de Rclone
Remerciements
- Auteur - Ricardo Malhado (architecte principal de solutions cloud)
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.
Migrate a Red Hat Enterprise Linux Virtual Machine from Amazon Web Services to Oracle Cloud Infrastructure
F95989-01
April 2024