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

Tạo VM

POST/v2.1/servers

Để tạo một máy ảo (VM) mới, bạn gửi request POST tới endpoint /v2.1/servers của compute service. Request này cần token xác thực, bạn đưa token vào header của request.

note

Bạn nên thêm X-OpenStack-Nova-API-Version: 2.67 vào header của request để đảm bảo tương thích với phiên bản API.

info

Nguồn: create-server

Request​

Tham số body​

serverobjectbắt buộc

Object server.

flavorRefstringbắt buộc

Tham chiếu flavor (ID/UUID hoặc URL đầy đủ).

namestringbắt buộc

Tên server.

networksarraybắt buộc

Kết nối network. Bắt buộc khi có nhiều network. Từ 2.37, hỗ trợ giá trị chuỗi "auto" hoặc "none" (không phải list) và không thể kết hợp với các giá trị network khác. Tag interface được chấp nhận trong 2.32–2.36 và từ 2.42.

8 trường
uuidstringbody

UUID của network cho NIC. Bắt buộc nếu bỏ trống port. Áp dụng định dạng UUID từ 2.37.

portstringbody

ID của port hiện có (phải ở trạng thái DOWN). Bắt buộc nếu bỏ trống uuid. Security group được yêu cầu không áp dụng cho port đã tồn tại.

fixed_ipsarraybody

Các fixed IP. Nếu chỉ định IP, cần có thêm network uuid/net_id.

ip_addressstringbody

Địa chỉ fixed IP.

ip_versionintegerbody

Phiên bản IP 4 hoặc 6. Mặc định 4.

port_security_enabledbooleanbắt buộcbody

Giá trị port_security_enabled mặc định cho port được tạo. Mới trong 2.42.

security_groupsarraybắt buộcbody

ID security group cho port. Mới trong 2.67.

tagstringbody

Tag vai trò thiết bị, hiển thị qua metadata/config drive. Được chấp nhận trong 2.32–2.36 và từ 2.42.

accessIPv4string

Địa chỉ IPv4 dùng để truy cập server.

accessIPv6string

Địa chỉ IPv6 dùng để truy cập server.

adminPassstring

Mật khẩu admin; được tạo tự động nếu bỏ trống.

block_device_mapping_v2array

Ánh xạ block device nâng cao (boot từ volume, v.v.). Tag được chấp nhận trong 2.32 và từ 2.42.

13 trường
boot_indexintegerbắt buộcbody

Thứ tự boot; 0 boot đầu tiên; giá trị âm hoặc None sẽ tắt.

delete_on_terminationbooleanbody

Xoá volume khi xoá server. Mặc định false.

destination_typestringbody

Vị trí thiết bị: local hoặc volume.

device_namestringbody

Đường dẫn thiết bị; bị libvirt bỏ qua từ 12.0.0.

device_typestringbody

Kiểu thiết bị (ví dụ disk, cdrom).

disk_busstringbody

Kiểu bus (ví dụ ide, scsi, virtio).

guest_formatstringbody

Filesystem (ví dụ ext4, xfs, swap). Swap có một số ràng buộc riêng.

no_devicebooleanbody

Đánh dấu là không có thiết bị nếu true.

source_typestringbody

Nguồn: blank, image, snapshot hoặc volume. Bắt buộc trừ khi no_device là true.

uuidstringbody

UUID tài nguyên nguồn (image/snapshot/volume).

volume_sizeintegerbody

Kích thước volume (GiB). Bắt buộc với image→volume và blank→volume.

tagstringbody

Tag vai trò block device; được chấp nhận trong 2.32 và từ 2.42.

volume_typestringbody

ID hoặc tên volume type; chỉ dùng với nguồn blank/image/snapshot và đích volume. Mới trong 2.67.

config_driveboolean

Bật config drive để inject metadata.

imageRefstring

UUID của image. Bắt buộc trừ khi boot từ volume.

key_namestring

Tên key pair.

metadataobject

Cặp key/value metadata (tối đa 255 byte mỗi giá trị).

OS-DCF:diskConfigstring

Cách phân vùng disk: AUTO hoặc MANUAL. Không thể ép image MANUAL sang AUTO.

2 giá trị
  • AUTO Tạo server với một phân vùng duy nhất bằng kích thước disk của flavor đích, và mở rộng filesystem để lấp đầy.
  • MANUAL Dùng sơ đồ phân vùng và filesystem của image nguồn. Dung lượng dư vẫn chưa được phân vùng.
personalityarray

Inject file văn bản khi khởi tạo. Chỉ dùng đến 2.56.

user_datastring

User data mã hoá Base64 (< 65535 byte).

descriptionstring

Mô tả tự do (< 255 ký tự). Mới trong 2.19.

tagsarray

Tối đa 50 tag; mỗi tag không rỗng, < 60 ký tự; không cho phép '/' và ','. Mới trong 2.52.

trusted_image_certificatesarray

Tối đa 50 ID chứng chỉ để xác minh chữ ký image; không dùng cho server boot từ volume. Mới trong 2.63.

hoststring

Tên compute host đích; thường chỉ admin dùng được. Mới trong 2.74.

hypervisor_hostnamestring

Hostname hypervisor đích; thường chỉ admin dùng được. Mới trong 2.74.

os:scheduler_hintsobject

Scheduler hint cấp cao nhất; khả năng hỗ trợ tuỳ từng cloud.

8 trường
build_near_host_ipstringbody

Ưu tiên host gần IP này (kèm cidr). Cần SimpleCIDRAffinityFilter.

cidrstringbody

CIDR cho build_near_host_ip; mặc định /24 nếu bỏ trống.

different_cellarraybody

Lên lịch tránh các cell được liệt kê (tên/route). Môi trường Cell v1.

different_hostarraybody

Ưu tiên host khác với các UUID server đã cho.

groupstringbody

UUID server group; áp dụng policy nhóm (affinity/anti-affinity).

querystringbody

Biểu thức JsonFilter.

same_hostarraybody

Ưu tiên cùng host với các UUID server đã cho.

target_cellstringbody

Tên cell đích. Môi trường Cell v1.

curl -ks -H 'Content-Type: application/json' -H 'X-Auth-Token: gAAAAA<...>' -H 'X-OpenStack-Nova-API-Version: 2.67' \
-d '{
"server": {
"name": "Ubuntu24",
"imageRef": "b4d9c688-1b96-4604-8cf1-d78c5c80a984",
"block_device_mapping_v2": [
{
"boot_index": "0",
"uuid": "b4d9c688-1b96-4604-8cf1-d78c5c80a984",
"source_type": "image",
"volume_size": "10",
"destination_type": "volume",
"volume_type": "nvmer3",
"delete_on_termination": true
}
],
"OS-DCF:diskConfig": "AUTO",
"flavorRef": "468c0c15-08bd-4e1d-8564-5053ce12966b",
"networks": [
{
"uuid": "8ae2b710-ad3d-469e-a75a-c3e203887d2e"
}
],
"key_name": "Docs Writter"
}
}' https://api.vietnix.cloud:8774/v2.1/servers

Response​

Tham số​

Locationstringbắt buộcheader

URL vị trí của server đã tạo. Được trả về trong header Location của response.

serverobjectbắt buộcbody

Object server.

idstringbắt buộcbody

UUID của server.

linksarraybắt buộcbody

Mảng link tới các tài nguyên liên quan.

adminPassstringbắt buộcbody

Mật khẩu quản trị của server. Tuỳ chọn; chỉ trả về khi enable_instance_password là True.

security_groupsarraybắt buộcbody

Một hoặc nhiều object security group.

1 trường
namestringbắt buộcbody

Tên security group.

OS-DCFstringbắt buộcbody

Cấu hình disk. Một trong: AUTO (một phân vùng theo kích thước disk của flavor), MANUAL (dùng bố cục của image nguồn; dung lượng dư vẫn chưa được phân vùng).

Mã trạng thái​

Thành công​

MãMô tả
200 - OKRequest thành công.
202 - AcceptedRequest đã được chấp nhận để xử lý nhưng chưa hoàn tất. Response có header Location chứa link để theo dõi tiến trình của request.

Lỗi​

MãMô tả
400 - Bad RequestMột số nội dung trong request không hợp lệ.
401 - UnauthorizedUser phải xác thực trước khi gửi request.
403 - ForbiddenPolicy không cho phép user hiện tại thực hiện thao tác này.
404 - Not FoundKhông tìm thấy tài nguyên được yêu cầu.
409 - ConflictThao tác xung đột với một thao tác khác trên tài nguyên này.

Response mẫu​

Response body
{
"server": {
"id": "70748c08-0f81-4e73-b2f1-7568e5339faa",
"links": [
{
"rel": "self",
"href": "https://api.vietnix.cloud:8774/v2.1/servers/70748c08-0f81-4e73-b2f1-7568e5339faa"
},
{
"rel": "bookmark",
"href": "https://api.vietnix.cloud:8774/servers/70748c08-0f81-4e73-b2f1-7568e5339faa"
}
],
"OS-DCF:diskConfig": "AUTO",
"security_groups": [
{
"name": "default"
}
],
"adminPass": "z344qQ3xajM4"
}
}