Difference between revisions of "Deploy VM with Cloud Image"

From CMU ITSC Network
(Created page with "<nowiki>#</nowiki>")
 
 
(31 intermediate revisions by the same user not shown)
Line 1: Line 1:
<nowiki>#</nowiki>
+
== การสร้าง ssh key pair ==
 +
* เปิด Windows Powershell หรือ Terminal
 +
 
 +
* รันคำสั่งต่อไปนี้
 +
  <pre>ssh-keygen -C "your_email@example.com"</pre>
 +
  คำอธิบาย
 +
  -C : เพิ่ม comment เพื่อระบุว่า key นี้ใช้กับอีเมลใด
 +
 
 +
* กำหนดชื่อไฟล์และตำแหน่งจัดเก็บ
 +
ระบบจะถามว่า:
 +
  <pre>
 +
  Enter file in which to save the key (C:\Users\yourname/.ssh/id_ed25519):
 +
  </pre>
 +
  กด Enter เพื่อใช้ค่าเริ่มต้น (C:\Users\yourname/.ssh/id_ed25519)
 +
  หรือพิมพ์ชื่อไฟล์ใหม่ เช่น D:\Data\ssh-key\id_ed25519
 +
 
 +
* ตั้งรหัสผ่านสำหรับ Key (ถ้าต้องการ)
 +
ระบบจะถามว่า:
 +
  <pre>
 +
  Enter passphrase (empty for no passphrase):
 +
  </pre>
 +
  ถ้าไม่ต้องการรหัสผ่าน ให้กด Enter
 +
  ถ้าต้องการความปลอดภัยเพิ่ม ให้ใส่รหัสผ่านแล้วกด Enter
 +
 
 +
* ตรวจสอบไฟล์ที่สร้าง
 +
  ไฟล์จะถูกสร้างในโฟลเดอร์ที่ระบุก่อนหน้าโดยจะมี 2 ไฟล์
 +
  <pre>
 +
  id_ed25519 → Private Key
 +
  id_ed25519.pub → Public Key
 +
  </pre>
 +
 
 +
* เราจะใช้ Public Key ทำ Cloud init เพื่อสร้าง user เริ่มต้นให้กับ VM ในการสร้าง VM จาก Cloud image ซึ่งสามารถใช้กับหลาย ๆ  VM ได้
 +
* เราจะใช้ Private Key ในการเข้าใช้งาน VM ผ่าน ssh โดยไม่ใช้ password ดังนั้น'''ต้องเก็บ Private Key เป็นความลับไม่ส่งต่อให้ใคร และห้ามทำหาย'''
 +
 
 +
== การสร้าง VM จาก Cloud image ==
 +
*  ไปที่ Create VM
 +
[[File:Vm-cloud-image-01.png|link=]]
 +
 
 +
* ระบุรายละเอียดของ VM ตามต้องการ ชื่อของ VM ควรระบุชื่อผู้สร้างหรือชื่อส่วนงาน เช่น supawit-server, nurse-server จากนั้นกด Next
 +
[[File:Vm-cloud-image-02.png|link=]]
 +
 
 +
* ในส่วนของ Resources กด Attach Disk เลือก Type = Disk, Operation = Clone from Image, Image เลือก image ของ OS ที่มีคำว่า cloudimg, Capacuty = '''ขนาดของ Disk ควรจะใช้น้อย ๆ ก่อน ไม่ต้องเผื่อ จะทำให้เสียพื้นที่โควต้าเกินความจำเป็นได้ สามารถขยายเพิ่มได้''' จากนั้นกด Save
 +
[[File:Vm-cloud-image-03.png|link=]]
 +
 
 +
* กด Attach to Subnet เลือก Subnet เลือกการตั้งค่า IP Address เป็น DHCP หรือ Static ได้ จากนั้นกด Save
 +
[[File:Vm-cloud-image-04.png|link=]]
 +
[[File:Vm-cloud-image-05.png|link=]]
 +
 
 +
*กด Next ในส่วนของ Resources
 +
[[File:Vm-cloud-image-06.png|link=]]
 +
 
 +
* ในส่วนของ Management ตั้งค่า Timezone, Guest Customization เลือก Script Type เป็น '''Cloud-init(Linux)''', Configuration Method เป็น '''Custom Script'''
 +
[[File:Vm-cloud-image-07.png|link=]]
 +
 
 +
* เนื้อหาของ Script จะเป็นดังนี้ (ข้อแนะนำ : ควร save script นี้ไว้สำหรับใช้ deploy vm ครั้งต่อ ๆ ไป)
 +
  <pre>
 +
  #cloud-config
 +
  users:
 +
    - name: youusername
 +
      ssh-authorized-keys:
 +
        - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAnSuDZmnvTDMAhG29cUgw7WQ8CPXPyUxMH3zGkbqfCD supawit-key@x1
 +
      sudo: ALL=(ALL) NOPASSWD:ALL
 +
      groups: sudo
 +
      shell: /bin/bash
 +
  </pre>
 +
โดย
 +
** name: คือ username ที่จะสร้างบน VM
 +
** ssh-authorized-keys: คือ Public Key ที่สร้างไว้แล้วสามารถดูได้จากคำสั่ง cat
 +
** sudo: ALL=(ALL) NOPASSWD:ALL คือให้ user ที่สร้างใช้ sudo ได้โดยไม่ต้องถาม password
 +
[[File:Vm-cloud-image-09.png|link=]]
 +
 
 +
* กด Next ในส่วนของสรุป กด Create VM
 +
[[File:Vm-cloud-image-08.png|link=]]
 +
 
 +
* รอ VM สร้างเสร็จเลือก VM แล้วเลือก Action, Power On
 +
[[File:Vm-cloud-image-10.png|link=]]
 +
 
 +
* การ remote เข้า server จะใช้ Private Key กรณี Pirvate Key อยู่ใน path default (${HOME}\.ssh\) ใช้คำสั่ง
 +
  <pre>
 +
  ssh yourusername@ip-address
 +
  </pre>
 +
 
 +
* หรือ Private Key ไม่ได้อยู่ path default สามารถระบุ path ของ Private Key ด้วย option -i
 +
  <pre>
 +
  ssh -i .\id_ed25519 yourusername@ip-address
 +
  </pre>
 +
 
 +
* ตัวอย่าง
 +
[[File:Vm-cloud-image-11.png|link=]]
 +
 
 +
== การขยาย Disk ของ VM ==
 +
 
 +
* ใช้คำสั่ง df -h เพื่อดูการปริมาณการใช้งาน Disk
 +
<pre>
 +
youusername@ubuntu:~$ df -h
 +
Filesystem      Size  Used Avail Use% Mounted on
 +
tmpfs          383M  1.1M  382M  1% /run
 +
efivarfs        256K  17K  234K  7% /sys/firmware/efi/efivars
 +
/dev/sda1        48G  1.9G  46G  4% /
 +
tmpfs          1.9G    0  1.9G  0% /dev/shm
 +
tmpfs          5.0M    0  5.0M  0% /run/lock
 +
/dev/sda16      881M  62M  758M  8% /boot
 +
/dev/sda15      105M  6.2M  99M  6% /boot/efi
 +
tmpfs          383M  12K  383M  1% /run/user/100
 +
</pre>
 +
 
 +
* ใช้คำสั่ง lsblk เพื่อดูโครงสร้าง Disk/Partition
 +
<pre>
 +
youusername@ubuntu:~$ lsblk
 +
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
 +
sda      8:0    0  50G  0 disk
 +
├─sda1    8:1    0  49G  0 part /
 +
├─sda14  8:14  0    4M  0 part
 +
├─sda15  8:15  0  106M  0 part /boot/efi
 +
└─sda16 259:0    0  913M  0 part /boot
 +
sr0      11:0    1  374K  0 rom
 +
</pre>
 +
 
 +
* ถ้าต้องการเพิ่มขนาด Disk ไปที่หน้าจัดการ VM บน Private Cloud เลือก VM, Actions, Update
 +
[[File:Vm-cloud-image-13.png|link=]]
 +
 
 +
* ในส่วน Configuration กด Next
 +
[[File:Vm-cloud-image-14.png|link=]]
 +
 
 +
* ในส่วน Disks กดรูปดินสอทางขวาของ Disk ที่ต้องการขยาย
 +
[[File:Vm-cloud-image-15.png|link=]]
 +
 
 +
* ในหน้าต่าง Update Disk เพิ่ม Capacity ที่ต้องการ '''ควรเพิ่มทีละน้อย เมื่อใกล้เต็มค่อยมาเพิ่มอีกได้เรื่อย ๆ ไม่จำเป็นต้องจองพื้นที่ไว้''' จากนั้นกด Save, Next, Next และ Save
 +
[[File:Vm-cloud-image-16.png|link=]]
 +
 
 +
* จากนั้นใช้คำสั่ง lsblk จะเห็นว่าขนาดของ Disk เพิ่มเป็น 100G
 +
<pre>
 +
youusername@ubuntu:~$ lsblk
 +
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
 +
sda      8:0    0  100G  0 disk
 +
├─sda1    8:1    0  49G  0 part /
 +
├─sda14  8:14  0    4M  0 part
 +
├─sda15  8:15  0  106M  0 part /boot/efi
 +
└─sda16 259:0    0  913M  0 part /boot
 +
sr0      11:0    1  374K  0 rom
 +
</pre>
 +
 
 +
* เมื่อใช้ df -h จะยังเห็นว่าขนาดของ partition ยังเป็น 50G อยู่
 +
<pre>
 +
youusername@ubuntu:~$ df -h
 +
Filesystem      Size  Used Avail Use% Mounted on
 +
tmpfs          383M  1.1M  382M  1% /run
 +
efivarfs        256K  17K  234K  7% /sys/firmware/efi/efivars
 +
/dev/sda1        48G  1.9G  46G  4% /
 +
tmpfs          1.9G    0  1.9G  0% /dev/shm
 +
tmpfs          5.0M    0  5.0M  0% /run/lock
 +
/dev/sda16      881M  62M  758M  8% /boot
 +
/dev/sda15      105M  6.2M  99M  6% /boot/efi
 +
tmpfs          383M  12K  383M  1% /run/user/1000
 +
</pre>
 +
 
 +
* ให้ขยาย partition โดยใช้คำสั่ง '''sudo growpart /dev/sda 1''' และ '''sudo resize2fs /dev/sda1''' ดังนี้
 +
<pre>
 +
youusername@ubuntu:~$ sudo growpart /dev/sda 1
 +
CHANGED: partition=1 start=2099200 old: size=102758367 end=104857566 new: size=207615967 end=209715166
 +
youusername@ubuntu:~$ sudo resize2fs /dev/sda1
 +
resize2fs 1.47.0 (5-Feb-2023)
 +
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
 +
old_desc_blocks = 7, new_desc_blocks = 13
 +
The filesystem on /dev/sda1 is now 25951995 (4k) blocks long.
 +
</pre>
 +
 
 +
* ใช้คำสั่ง df -h และ lsblk เพื่อดูการใช้งานและโครงสร้าง partition จะเห็นว่าขยายเป็น 100G แล้ว
 +
<pre>
 +
youusername@ubuntu:~$ df -h
 +
Filesystem      Size  Used Avail Use% Mounted on
 +
tmpfs          383M  1.1M  382M  1% /run
 +
efivarfs        256K  17K  234K  7% /sys/firmware/efi/efivars
 +
/dev/sda1        96G  1.9G  94G  2% /
 +
tmpfs          1.9G    0  1.9G  0% /dev/shm
 +
tmpfs          5.0M    0  5.0M  0% /run/lock
 +
/dev/sda16      881M  62M  758M  8% /boot
 +
/dev/sda15      105M  6.2M  99M  6% /boot/efi
 +
tmpfs          383M  12K  383M  1% /run/user/1000
 +
youusername@ubuntu:~$ lsblk
 +
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
 +
sda      8:0    0  100G  0 disk
 +
├─sda1    8:1    0  99G  0 part /
 +
├─sda14  8:14  0    4M  0 part
 +
├─sda15  8:15  0  106M  0 part /boot/efi
 +
└─sda16 259:0    0  913M  0 part /boot
 +
sr0      11:0    1  374K  0 rom
 +
</pre>
 +
 
 +
== ติดต่อสอบถาม ==
 +
[https://teams.microsoft.com/l/chat/0/0?users=supawit.w@cmu.ac.th MS Teams Chat]

Latest revision as of 09:46, 20 October 2025

การสร้าง ssh key pair

  • เปิด Windows Powershell หรือ Terminal
  • รันคำสั่งต่อไปนี้
ssh-keygen -C "your_email@example.com"
 คำอธิบาย
 -C : เพิ่ม comment เพื่อระบุว่า key นี้ใช้กับอีเมลใด
  • กำหนดชื่อไฟล์และตำแหน่งจัดเก็บ

ระบบจะถามว่า:

  Enter file in which to save the key (C:\Users\yourname/.ssh/id_ed25519):
  
 กด Enter เพื่อใช้ค่าเริ่มต้น (C:\Users\yourname/.ssh/id_ed25519)
 หรือพิมพ์ชื่อไฟล์ใหม่ เช่น D:\Data\ssh-key\id_ed25519
  • ตั้งรหัสผ่านสำหรับ Key (ถ้าต้องการ)

ระบบจะถามว่า:

  Enter passphrase (empty for no passphrase):
  
 ถ้าไม่ต้องการรหัสผ่าน ให้กด Enter
 ถ้าต้องการความปลอดภัยเพิ่ม ให้ใส่รหัสผ่านแล้วกด Enter
  • ตรวจสอบไฟล์ที่สร้าง
 ไฟล์จะถูกสร้างในโฟลเดอร์ที่ระบุก่อนหน้าโดยจะมี 2 ไฟล์
  id_ed25519 → Private Key
  id_ed25519.pub → Public Key
  
  • เราจะใช้ Public Key ทำ Cloud init เพื่อสร้าง user เริ่มต้นให้กับ VM ในการสร้าง VM จาก Cloud image ซึ่งสามารถใช้กับหลาย ๆ VM ได้
  • เราจะใช้ Private Key ในการเข้าใช้งาน VM ผ่าน ssh โดยไม่ใช้ password ดังนั้นต้องเก็บ Private Key เป็นความลับไม่ส่งต่อให้ใคร และห้ามทำหาย

การสร้าง VM จาก Cloud image

  • ไปที่ Create VM

Vm-cloud-image-01.png

  • ระบุรายละเอียดของ VM ตามต้องการ ชื่อของ VM ควรระบุชื่อผู้สร้างหรือชื่อส่วนงาน เช่น supawit-server, nurse-server จากนั้นกด Next

Vm-cloud-image-02.png

  • ในส่วนของ Resources กด Attach Disk เลือก Type = Disk, Operation = Clone from Image, Image เลือก image ของ OS ที่มีคำว่า cloudimg, Capacuty = ขนาดของ Disk ควรจะใช้น้อย ๆ ก่อน ไม่ต้องเผื่อ จะทำให้เสียพื้นที่โควต้าเกินความจำเป็นได้ สามารถขยายเพิ่มได้ จากนั้นกด Save

Vm-cloud-image-03.png

  • กด Attach to Subnet เลือก Subnet เลือกการตั้งค่า IP Address เป็น DHCP หรือ Static ได้ จากนั้นกด Save

Vm-cloud-image-04.png Vm-cloud-image-05.png

  • กด Next ในส่วนของ Resources

Vm-cloud-image-06.png

  • ในส่วนของ Management ตั้งค่า Timezone, Guest Customization เลือก Script Type เป็น Cloud-init(Linux), Configuration Method เป็น Custom Script

Vm-cloud-image-07.png

  • เนื้อหาของ Script จะเป็นดังนี้ (ข้อแนะนำ : ควร save script นี้ไว้สำหรับใช้ deploy vm ครั้งต่อ ๆ ไป)
  #cloud-config
  users:
    - name: youusername
      ssh-authorized-keys:
        - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAnSuDZmnvTDMAhG29cUgw7WQ8CPXPyUxMH3zGkbqfCD supawit-key@x1
      sudo: ALL=(ALL) NOPASSWD:ALL
      groups: sudo
      shell: /bin/bash
  

โดย

    • name: คือ username ที่จะสร้างบน VM
    • ssh-authorized-keys: คือ Public Key ที่สร้างไว้แล้วสามารถดูได้จากคำสั่ง cat
    • sudo: ALL=(ALL) NOPASSWD:ALL คือให้ user ที่สร้างใช้ sudo ได้โดยไม่ต้องถาม password

Vm-cloud-image-09.png

  • กด Next ในส่วนของสรุป กด Create VM

Vm-cloud-image-08.png

  • รอ VM สร้างเสร็จเลือก VM แล้วเลือก Action, Power On

Vm-cloud-image-10.png

  • การ remote เข้า server จะใช้ Private Key กรณี Pirvate Key อยู่ใน path default (${HOME}\.ssh\) ใช้คำสั่ง
  ssh yourusername@ip-address
  
  • หรือ Private Key ไม่ได้อยู่ path default สามารถระบุ path ของ Private Key ด้วย option -i
  ssh -i .\id_ed25519 yourusername@ip-address
  
  • ตัวอย่าง

Vm-cloud-image-11.png

การขยาย Disk ของ VM

  • ใช้คำสั่ง df -h เพื่อดูการปริมาณการใช้งาน Disk
youusername@ubuntu:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           383M  1.1M  382M   1% /run
efivarfs        256K   17K  234K   7% /sys/firmware/efi/efivars
/dev/sda1        48G  1.9G   46G   4% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda16      881M   62M  758M   8% /boot
/dev/sda15      105M  6.2M   99M   6% /boot/efi
tmpfs           383M   12K  383M   1% /run/user/100
  • ใช้คำสั่ง lsblk เพื่อดูโครงสร้าง Disk/Partition
youusername@ubuntu:~$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda       8:0    0   50G  0 disk
├─sda1    8:1    0   49G  0 part /
├─sda14   8:14   0    4M  0 part
├─sda15   8:15   0  106M  0 part /boot/efi
└─sda16 259:0    0  913M  0 part /boot
sr0      11:0    1  374K  0 rom
  • ถ้าต้องการเพิ่มขนาด Disk ไปที่หน้าจัดการ VM บน Private Cloud เลือก VM, Actions, Update

Vm-cloud-image-13.png

  • ในส่วน Configuration กด Next

Vm-cloud-image-14.png

  • ในส่วน Disks กดรูปดินสอทางขวาของ Disk ที่ต้องการขยาย

Vm-cloud-image-15.png

  • ในหน้าต่าง Update Disk เพิ่ม Capacity ที่ต้องการ ควรเพิ่มทีละน้อย เมื่อใกล้เต็มค่อยมาเพิ่มอีกได้เรื่อย ๆ ไม่จำเป็นต้องจองพื้นที่ไว้ จากนั้นกด Save, Next, Next และ Save

Vm-cloud-image-16.png

  • จากนั้นใช้คำสั่ง lsblk จะเห็นว่าขนาดของ Disk เพิ่มเป็น 100G
youusername@ubuntu:~$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda       8:0    0  100G  0 disk
├─sda1    8:1    0   49G  0 part /
├─sda14   8:14   0    4M  0 part
├─sda15   8:15   0  106M  0 part /boot/efi
└─sda16 259:0    0  913M  0 part /boot
sr0      11:0    1  374K  0 rom
  • เมื่อใช้ df -h จะยังเห็นว่าขนาดของ partition ยังเป็น 50G อยู่
youusername@ubuntu:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           383M  1.1M  382M   1% /run
efivarfs        256K   17K  234K   7% /sys/firmware/efi/efivars
/dev/sda1        48G  1.9G   46G   4% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda16      881M   62M  758M   8% /boot
/dev/sda15      105M  6.2M   99M   6% /boot/efi
tmpfs           383M   12K  383M   1% /run/user/1000
  • ให้ขยาย partition โดยใช้คำสั่ง sudo growpart /dev/sda 1 และ sudo resize2fs /dev/sda1 ดังนี้
youusername@ubuntu:~$ sudo growpart /dev/sda 1
CHANGED: partition=1 start=2099200 old: size=102758367 end=104857566 new: size=207615967 end=209715166
youusername@ubuntu:~$ sudo resize2fs /dev/sda1
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 13
The filesystem on /dev/sda1 is now 25951995 (4k) blocks long.
  • ใช้คำสั่ง df -h และ lsblk เพื่อดูการใช้งานและโครงสร้าง partition จะเห็นว่าขยายเป็น 100G แล้ว
youusername@ubuntu:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           383M  1.1M  382M   1% /run
efivarfs        256K   17K  234K   7% /sys/firmware/efi/efivars
/dev/sda1        96G  1.9G   94G   2% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda16      881M   62M  758M   8% /boot
/dev/sda15      105M  6.2M   99M   6% /boot/efi
tmpfs           383M   12K  383M   1% /run/user/1000
youusername@ubuntu:~$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda       8:0    0  100G  0 disk
├─sda1    8:1    0   99G  0 part /
├─sda14   8:14   0    4M  0 part
├─sda15   8:15   0  106M  0 part /boot/efi
└─sda16 259:0    0  913M  0 part /boot
sr0      11:0    1  374K  0 rom

ติดต่อสอบถาม

MS Teams Chat