วันอังคารที่ 29 พฤศจิกายน พ.ศ. 2554

สร้าง OpenSUSE service image สำหรับ OpenStack

บังเอิญได้มีโอกาสเล่น OpenStack ผ่าน Community Cloud เลยได้ลองทำ Services Image สำหรับ OpenStack ดูบ้าง ซึ่งวิธีการไม่แตกต่างจากการทำ Image สำหรับ Eucalyptus สักเท่าไร หลักการทำมีดังนี้




  • สร้าง Image แบบ qcow2 เพื่อใช้เป็น Disk Image

  • ใช้ kvm ติดตั้ง OpenSUSE ลงใน Disk Image

  • ปรับแต่ง Disk Image เพื่อติดตั้ง ssh key




มาลงมือกันเลยครับ เริ่มจากสร้าง Disk Image ให้พอสำหรับติดตั้ง OpenSUSE



kvm-img create -f qcow2 opensuse.img 5G



จากนั้นก็ติดตั้ง OpenSUSE ลงไปใน Disk Image



kvm -m 512 -cdrom openSUSE-11.4-DVD-x86_64.iso -drive file=opensuse.img,if=virtio,index=0 -boot d -net nic -net user -nographic -vnc :1



ใช้ VNC ต่อไปยัง VM ที่เรา run ดังนี้



vncviewer 10.10.10.1 :1



เลือกติดตั้ง SSH Server, CURL และ package ที่ต้องการ หลังจากติดตั้งเสร็จให้ shutdown VM และ boot เพื่อปรับแต่งดังนี้



kvm -m 512 -drive file=opensuse.img,if=virtio,index=0,boot=on -boot c -net nic -net user -nographic -vnc :1



ให้ VNC เชื่อมต่อเหมือนเดิม ใช้ zypper ติดตั้ง openssh, curl ดังนี้



zypper install openssh curl



เพิ่ม ssh key อัตโนมัติเมื่อ start instance ให้สร้างไฟล์ /etc/init.d/sshkey แล้วใส่ config ลงไปดังนี้



echo >> /root/.ssh/authorized_keys
curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys
echo "AUTHORIZED_KEYS:"
echo "************************"
cat /root/.ssh/authorized_keys
echo "************************"



เปลี่ยน permission ให้ execute ได้ดังนี้



chmod 755 /etc/init.d/sshkey



จากนั้น config ให้เริ่มทำงานทุกครั้งเมื่อ boot เครื่องดังนี้



chkconfig sshkey on



ตั้งค่า firewall ให้ ssh เข้ามาได้ ใช้ yast2 ไม่ใช่ iptable นะจ๊ะ



yast2



จากนั้นลบ network persistance rules ออก เพื่อให้ instance จัดการ network insterface ได้ถูกต้อง



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



เท่านี้ก็เรียบร้อยแล้ว :) shutdown VM แล้ว



หากต้องการใช้งานก็ Upload Image ไปยัง OpenStack ได้เลย โดยใช้คำสั่ง



cloud-publish-image amd64 opensuse.img opensusebucket



หลังจาก Upload Image เสร็จเรียบร้อยแล้ว เราจะได้หมายเลข ami กับไฟล์ image manifest ดังนี้



ami-00000001 opensusebucket/opensuse.img.manifest.xml



หากต้องการ start instance ก็สามารถสั่ง run ได้เลย โดยใช้คำสั่ง



euca-run-instances ami-00000001 -k mykey -t m1.tiny



สำหรับการทำ Service Image จาก Linux Distribution อื่นๆ ก็ใช้วิธีการคล้ายๆ กันนี้ครับ


ไม่มีความคิดเห็น:

แสดงความคิดเห็น