Difference between revisions of "Deploy VM with Cloud Image"
From CMU ITSC Network
(18 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== การสร้าง ssh key pair == | == การสร้าง 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 == | ||
+ | |||
+ | == ติดต่อสอบถาม == | ||
+ | [https://teams.microsoft.com/l/chat/0/0?users=supawit.w@cmu.ac.th MS Teams Chat] |
Revision as of 09:55, 17 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 ตามต้องการ ชื่อของ VM ควรระบุชื่อผู้สร้างหรือชื่อส่วนงาน เช่น supawit-server, nurse-server จากนั้นกด Next
- ในส่วนของ Resources กด Attach Disk เลือก Type = Disk, Operation = Clone from Image, Image เลือก image ของ OS ที่มีคำว่า cloudimg, Capacuty = ขนาดของ Disk ควรจะใช้น้อย ๆ ก่อน ไม่ต้องเผื่อ จะทำให้เสียพื้นที่โควต้าเกินความจำเป็นได้ สามารถขยายเพิ่มได้ จากนั้นกด Save
- กด Attach to Subnet เลือก Subnet เลือกการตั้งค่า IP Address เป็น DHCP หรือ Static ได้ จากนั้นกด Save
- กด Next ในส่วนของ Resources
- ในส่วนของ Management ตั้งค่า Timezone, Guest Customization เลือก Script Type เป็น Cloud-init(Linux), Configuration Method เป็น Custom Script
- เนื้อหาของ 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
- กด Next ในส่วนของสรุป กด Create VM
- รอ VM สร้างเสร็จเลือก VM แล้วเลือก Action, Power On
- การ 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
- ตัวอย่าง