Ecco le principali differenze tra i due ambienti Cloud

aws-vs-azure

In questo How to si cercherà di spiegare come migrare un sistema Ubuntu (al momento per RedHat non vi è uno script certificato per la migrazione presso Azure) da Amazon AWS a Azure Cloud.

Step 1: Backup

Il processo di migrazione presentato apporta modifiche minime alle macchine virtuali di origine in modo da prepararle alla migrazione.
Tuttavia, come con in tutte le migrazioni, si consiglia l’esecuzione e verifica di un backup completo del sistema in modo da assicurarsi un ripristino dell’ambiente applicativo originale, se necessario.

Step 2: Verifica del sistema di origine

Per fare in modo che la migrazione abbia successo, avere la stessa distribuzione e versione di sistema Linux sul sistema di origine e destinazione aiuta molto. Migrare ad esempio da Ubuntu a RedHAT occorre adottare particolari accorgimenti e conoscenza del sistema in modo da riadattare il processo.

Su ogni VM di origine, è possibile verificare la distro del sistema operativo e la versione con i seguenti comandi:

cat /etc/issue
uname –all

Step 3: Recupero e delivery degli ambienti target su Azure.

Sulla base delle informazioni raccolte nello Step 2, il provisioning di nuove macchine virtuali sulla piattaforma cloud di Microsoft Azure deve essere fatto utilizzando la stessa distribuzione e versione del sistema operativo delle macchine virtuali di origine.

Step 4: Aggiornamento dei sistemi

Prima di procedere con la migrazione è consigliabile che i sistemi vergano aggiornati.
I comandi principali sono:

apt-get update
apt-get dist-upgrade

Step 5: Installare i pacchetti rsync e screen sul sistema source e target

In questo processo di migrazione verrà usato rsync attraverso un ssh tra i due sistemi di origine e destinazione.  L’effettivo trasferimento dei file tra macchine virtuali può richiedere un certo tempo, quindi vi consiglio anche usando screen in modo che si possa facilmente ricollegare a una sessione di migrazione se inavvertitamente sarete scollegati.

Installare entrambi i pacchetti

apt-get install rsync
apt-get install screen

Step 6: Creazione di un’utenza per la migrazione

Creare una utenza di sistema che verrà usata durante la migrazione

sudo groupadd -g 500 azureuser
sudo useradd -u 500 -g 500 -m -s /bin/bash azureuser
sudo passwd azureuser

Step 7: avvio di una sessione di screen

Nel sistema di origine  attivare una sessione di screen

screen sudo -S AzureMigration

Se durante il processo di migrazione verrete disconnessi, potrete riconnettervi utilizzando il comando:

sudo screen -r

Step 8: Preparazione di un elenco di folders e files da escludere

La preparazione si rende necessaria in modo da evitare che le informazioni del sistema di origine (hostname, configurazioni AWS, configurazioni di sistema e altro) possano sovrascrivere quelle di destinazione.

EXCLUDEFILE = / tmp / exclude.file

Excludelist = '/ boot / etc / fstab / etc / hostname / etc / issue / etc / hosts 
/ etc / sudoers / etc / network / etc / network / * /etc/resolv.conf 
/ etc / ssh / * / etc / sysctl.conf / etc / mtab /etc/udev/rules.d/* 
/ blocco / net / tmp '

EXCLUDEPATH = $ (echo $ excludelist | sed 's / \ / \\ n / g')

echo -e $ EXCLUDEPATH> $ EXCLUDEFILE

find / -name '* cloud-init *' >> $ EXCLUDEFILE

find / -name '* cloud-config *' >> $ EXCLUDEFILE

find / -name '* cloud-finale *' >> $ EXCLUDEFILE

L’elenco attuale di directory e file che si escludono può variare da questa lista, sulla base della distro Linux versione, pacchetti e le applicazioni che si sta migrando.

Step 9: Stop dei processi durante la migrazione.

Prima di procedere con la migrazione, è strettamente consigliabile lo stop dei servizi presenti sul sistema di origine.

Step 10: Preparazione alla copia

Essendo che la copia verrà eseguita tramite rsync ma attraverso il tunnel ssh, la prima cosa da fare è creare il tunnel SSH tra i due sistemi.

TARGETVM="insert_target_vm_public_ip_address"
rsync -e "ssh" -rlpEAXogDtSzh -P -x –exclude-from="$EXCLUDEFILE" –rsync-path="sudo rsync" –verbose –progress / [email protected]$TARGETVM:/
rsync -e "ssh" -crlpEAXogDtSzh -P -x –exclude-from="$EXCLUDEFILE" –rsync-path="sudo rsync" –verbose –progress / [email protected]$TARGETVM:/

Come si può vedere, si sta chiedendo allo script di sincronizzare l’intera root ( / ) sulla sua destinazione e poi verificarne lesito.
Se i sistemi sono identici è possibile eseguire questo metodo altrimenti occorre specificare le singole folders da copiare

Step 11: Restart del sistema di destinazione

Al termine della sincronizzazione, riavviare il sistema di destinazione.