Chuyển tới nội dung chính

Tạo VM từ CLI

Trang này tạo VM từ đầu bằng openstack. Luồng tương ứng với các lệnh API trong Create VM, nhưng CLI tự dựng request body.

1. Tìm tài nguyên​

openstack flavor list
openstack image list
openstack network list
openstack security group list

Giữ lại ID. Tên không duy nhất giữa các project, nên trong script hãy truyền ID.

Với external network dùng cho floating IP:

openstack network list --external

2. Thêm SSH key​

openstack keypair create --public-key ~/.ssh/id_ed25519.pub mykey
openstack keypair list

Nếu key pair đã tồn tại, bỏ qua bước này và dùng lại tên key.

3. Mở SSH​

Security group default chặn toàn bộ traffic vào. Tạo rule giới hạn theo địa chỉ của bạn:

openstack security group rule create \
--proto tcp \
--dst-port 22 \
--remote-ip 203.0.113.10/32 \
default

Chỉ dùng 0.0.0.0/0 để test nhanh, không để SSH mở ra internet.

4. Tạo VM​

openstack server create \
--flavor <flavor-id> \
--image <image-id> \
--network <network-id> \
--key-name mykey \
--security-group default \
vm1

Lệnh trả về ngay. VM đi qua BUILD rồi ACTIVE:

openstack server show vm1 -f json
openstack server list --name vm1

5. Boot từ volume​

Dùng volume khi cần volume type cụ thể, disk lớn hơn flavor, hoặc volume tồn tại độc lập với VM.

openstack volume create \
--image <image-id> \
--size 20 \
--type nvmer3 \
vm1-root

openstack server create \
--flavor <flavor-id> \
--volume vm1-root \
--network <network-id> \
--key-name mykey \
--security-group default \
vm1

--volume nhận volume có sẵn. Không truyền --image trong cùng lệnh.

6. Gắn floating IP​

openstack floating ip create <external-network-id>
openstack server add floating ip vm1 <floating-ip-address>
openstack server show vm1 -c addresses -f json

Kết nối:

ssh -i ~/.ssh/id_ed25519 <image-user>@<floating-ip-address>

User đăng nhập phụ thuộc image, ví dụ ubuntu, rocky, fedora hoặc cloud-user.

7. Dọn tài nguyên​

openstack server delete vm1
openstack floating ip delete <floating-ip-address>

Volume tạo cho VM không tự xoá cùng VM. Xoá riêng nếu không còn dùng:

openstack volume delete vm1-root