实践场景
本文将详细介绍如何使用HTTP方式调用API创建BFV(Boot From Volume)云主机。
前提条件
总体上应遵循创建云主机中所声明的条件及约束,确保:
操作步骤
以curl作为客户端为例,请求方式如下所示:
curl -g -i -X POST http://nova-api.openstack.svc.cluster.local:8774/v2.1/servers -H "OpenStack-API-Version: compute 2.74" -H "Accept: application/json" -H "Content-Type: application/json" -H "User-Agent: None" -H "X-Auth-Token: $token" -d '{"server":{"name":"new-server-test", "imageRef":"", "adminPass":"Easystack", "host": "node-1.domain.tld", "block_device_mapping_v2":[{"boot_index":0,"destination_type":"volume","source_type":"image","volume_size":"50","uuid":"234121c4-8f90-4b9b-a304-b84824c79593","volume_type":"hdd"}], "flavorRef":"7", "availability_zone":"default-az", "OS-DCF:diskConfig":"AUTO", "networks":[{"subnet_id":"a832b2c7-655c-41b5-9ac9-340796712a5e","uuid":"e825f75b-6c74-4c38-8316-07d6851654f7"}], "security_groups":[{"name":"default"}]}}'
其中:
$token即代表上一步获取到的Token ID,可参照签名机制中的描述获取用户Token。- imageRef 字段留空,表示不直接使用镜像创建云主机。
- block_device_mapping_v2 字段指明volume的镜像源(uuid)、大小(volume_size)等信息。
- flavorRef 字段即为云主机规格ID。
- networks 字段指明云主机将使用的网络。
- availability_zone 字段指明云主机在哪个AZ可用区中调度。
- host 字段(可选)指定云主机在哪个节点上创建。
返回结果:
{
"server": {
"id": "40d427a1-4a5b-4aec-91a0-6f018fd3ff03",
"links": [{
"rel": "self",
"href": "http://nova-api.openstack.svc.cluster.local:8774/v2.1/servers/40d427a1-4a5b-4aec-91a0-6f018fd3ff03"
}, {
"rel": "bookmark",
"href": "http://nova-api.openstack.svc.cluster.local:8774/servers/40d427a1-4a5b-4aec-91a0-6f018fd3ff03"
}],
"OS-DCF:diskConfig": "AUTO",
"security_groups": [{
"name": "default"
}],
"adminPass": "Easystack"
}
}
其中:
- id字段即为创建成功的云主机id。