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