AMI (Amazon Machine Image)

AMI – Amazon Machine Image

EMI – Eucalyptus Machine Image

AMI reprezinta masina virtuala ce se ruleaza pe un sistem cloud de tip Amazon. Fiecare astfel de AMI are un ID propriu, ID care specifica numele masini. O masina AMI consta dintr-un kernel, un fisier de ramdisk si imagineaza virtuala a hard-disk-ului. Acestea sunt pastrate in format criptat si decriptate in momentul rularii acestora. Si Eucalyptus fiind compatibil cu Amazon EC2 foloseste acelasi format de masina virtuala.

Eucalyptus stie sa lucreze cu doua tipuri de sisteme de virtualizare: KVM si XEN. In cadrul acestui tutorial este prezentata doar crearea unei masini virtuale pentru KVM,  pentru XEN fiind un proces similar.

Pentru fabricarea acestor masini virtuale exista 2 seturi de utilitare: ec2-ami-tools si euca2ools. Primul set se foloseste atunci cand se doreste crearea unei masini pentru rularea sa pe Amazon (are hardcodate url-urile pentru Amzon EC2), iar cel de al doilea in pentru situatia in care se foloseste un cloud privat: Ubuntu Enterprize Cloud.

Crearea unei masini custom consta din urmatorii pasi:

  1. crearea unei masini KVM sau XEN
  2. impachetarea masinii KVM sau XEN in formatul specific Amazon folosind euca2ools

In cele ce urmeaza voi detalia acesti pasi:

  1. Crearea unei masini KVM:
    1. kvm-img create kvm.img 4GB
    2. kvm -m 512 -drive file=kvm.img,if=scsi,index=0 -cdrom you_favourite_distribution.iso -boot d
    3. instalare sistem de operare de pe iso-ul specificat ca parametru
    4. kvm -m 512 -drive file=kvm.img,if=scsi,index=0,boot=on
    5. configurare networking
      1. eth0 trebuie sa iti ia ip prin dhcp iar setarile trebuie sa fie persistente
      2. setare hostname
    6. instalare pachete necesare (prezentare serverului de SSH este obligatorie pentru remote access)
    7. adaugare user ubuntu
    8. pentru XEN trebuie instalat un kernel compatibil (depinde pe ce hardware se ruleaza exista sansa de fi nevoie de un kernel cu suport de paravirtualizare built-in)
  2. Impachetarea masinii in formatul specific Amazon
    1. pentru ca operatiile de mai jos sa functioneaza corect trebuiesc incarcate variabilele de mediu din arhiva cu credentiale:
      1. source .euca/eucarc
    2. extragerea kernel-ului si a initrd-ului ce se doresc a fi folosite in exterioul masinii
      1. -rw-r–r– 1 root root      6192186 2010-03-25 15:04 initrd.img-2.6.26-1-486
        -rw-r–r– 1 root root 4294967296 2010-03-24 14:02 kvm.img
        -rw-r–r– 1 root root      1468016 2010-03-25 15:04 vmlinuz-2.6.26-1-486
    3. kernel
      1. euca-bundle-image -i vmlinuz –kernel true -d kernel -p kernel
      2. euca-upload-bundle -b custom-ami -m kernel/kernel.manifest.xml
      3. euca-register-bundle custom-ami/kernel.manifest.xml
      4. EKI=eki-…..
    4. ramdisk
      1. euca-bundle-image -i initrd.img –ramdisk true -d ramdisk -p ramdisk
      2. euca-upload-bundle -b custom-ami -m ramdisk/ramdisk.manifest.xml
      3. euca-register-bundle custom-ami/ramdisk.manifest.xml
      4. ERI=eri-…..
    5. image
      1. euca-bundle-image -i kvm.img –kernel $EKI –ramdisk $ERI -d image -p hdd
      2. euca-upload-bundle -b custom-ami -m image/hdd.manifest.xml
      3. euca-register custom-ami/hdd.manifest.xml
      4. AMI=emi-…..
  3. testare
    1. euca-describe-images
    2. euca-run-instance $AMI -k mykey -t c1.small