Clone virtual machine

Soms is het handig om er snel wat virtual machines bij te hebben. Zoals bv in mijn geval, ik ben bezig met een cursus en heb snel even 4 aparte machines nodig. het gaat hier om een Centos8 machine in mijn  geval een minimal install met een fixed IP adres. 

virt-clone

Het eerste wat je moet doen is een clone maken van de bestaande machine dit kan niet als de machine aanstaat. in sommigen gevallen kan het door de machine te suspenden maar als je qcow2 images gebruikt kan dat niet meer er zit dan een lock op disk-image. gebruik je een raw image dan kan het wel. Ik gebruik qcow2 dus moet mijn machine uitzetten. Als dat gebeurt is kan je virt-clone –original VMnaam –name NEWnaam –auto-clone de optie auto-clone zal een disk image aanmaken  op de default locatie. wil je hem ergens anders hebben gebruik dan de optie –file met de nieuwe locatie.

$ virsh list --all 
 Id   Name        State
----------------------------
 -    rhelclone   shut off

$ sudo virt-clone --original rhelclone --name rh8_client1 --auto-clone
Allocating 'rh8_client1.qcow2'                                                                                |  20 GB  00:00:02     

Clone 'rh8_client1' created successfully.

$ virsh list --all 
 Id   Name          State
------------------------------
 -    rh8_client1   shut off
 -    rhelclone     shut off

We hebben nu een bijna exacte copy van de machine, alleen de naam het uuid, disk source en mac adres van netwerk kaart is aan gepast. als je deze machine dus opstart kan je er zonder problemen mee werken. start je de oude machine ook op krijgen we  duplicate ip problemen. het kan zijn dat je in bv je netwerk config het netwerk device gekoppeld hebt aan het mac adres dan zal je de config moeten aanpassen. maar dat is op moment van schrijven bij een default centos8 install niet het geval.

virt-sysprep

Om nu een aantal zaken snel aan te passen kan je je machine opstarten en alles aanpassen maar je kan het ook doen met virt-sysprep je kan hier mee de settings van je machine voordat hij gestart is een passen bv verwijderen van  ssh-keys, hostname, network mac configuration, user accounts verwijderen en toevoegen en nog veel meer. voor dit document ben ik alleen geïnteresseerd om de hostname en het IP aan te passen.  voor de hostname is een flag –hostname maar voor het ip adres moet je de een file aanpassen, i dit geval is het een default centos/rhel install en staat het ip adres in /etc/sysconfig/network-scripts/ifcfg-ens3 dit kan je met een eenvoudige sed oplossen met het –run-command als je eerst wil kijken wat virt-sysprep allemaal aanpast gebruik dan als extra optie -n (dry run)

$ sudo virt-sysprep -d rh8_client1 --hostname client1 --run-command 'sed -i "s/192.168.53.251/192.168.53.111/" /etc/sysconfig/network-scripts/ifcfg-enp1s0'
[   0.0] Examining the guest ...
[   2.2] Performing "abrt-data" ...
[   2.3] Performing "backup-files" ...
[   2.5] Performing "bash-history" ...
[   2.5] Performing "blkid-tab" ...
[   2.6] Performing "crash-data" ...
[   2.6] Performing "cron-spool" ...
[   2.6] Performing "dhcp-client-state" ...
[   2.7] Performing "dhcp-server-state" ...
[   2.7] Performing "dovecot-data" ...
[   2.7] Performing "logfiles" ...
[   2.8] Performing "machine-id" ...
[   2.8] Performing "mail-spool" ...
[   2.8] Performing "net-hostname" ...
[   2.9] Performing "net-hwaddr" ...
[   2.9] Performing "pacct-log" ...
[   3.0] Performing "package-manager-cache" ...
[   3.1] Performing "pam-data" ...
[   3.1] Performing "passwd-backups" ...
[   3.1] Performing "puppet-data-log" ...
[   3.1] Performing "rh-subscription-manager" ...
[   3.2] Performing "rhn-systemid" ...
[   3.2] Performing "rpm-db" ...
[   3.3] Performing "samba-db-log" ...
[   3.3] Performing "script" ...
[   3.3] Performing "smolt-uuid" ...
[   3.3] Performing "ssh-hostkeys" ...
[   3.3] Performing "ssh-userdir" ...
[   3.4] Performing "sssd-db-log" ...
[   3.4] Performing "tmp-files" ...
[   3.4] Performing "udev-persistent-net" ...
[   3.5] Performing "utmp" ...
[   3.5] Performing "yum-uuid" ...
[   3.5] Performing "customize" ...
[   3.5] Setting a random seed
[   3.6] Setting the machine ID in /etc/machine-id
[   3.6] Setting the hostname: client1
[   3.7] Running: sed -i "s/192.168.53.251/192.168.53.111/" /etc/sysconfig/network-scripts/ifcfg-ens3
[   3.8] Performing "lvm-uuids" ...

als je nu de machine aanzet kan je hem bereiken onder het nieuwe ip adres