当我使用命令:
进行http post请求时curl -i -X POST -H "X-Auth-Token: $Token" -H "Content-Type: application/json" -H "Accept: application/json" -d '{"server": {"name": "server", "flavorRef": "1", "imageRef": "Cirros", "security_groups": [{"name": "default" }], "availability_zone": "nova", "networks": "Network1"}}' $OS_AUTH_URL:8775/servers
此消息出现在我身上:
{"message": "X-Instance-ID header is missing from request.<br /><br />nnn", "code": "400 Bad Request", "title": "Bad Request"}
我已经阅读了Nova API文档,但没有找到任何内容。
简短的答案是更改:
$OS_AUTH_URL:8775
to $OS_AUTH_URL:8774/v2/[your_project_id]/servers
端口8774
应该是OpenStack Nova服务的默认端口。您也可以使用curl
检查端点。因此,除非您有意将端点配置为端口8775
,否则端口号应为 8774
答案的较长版本是:
首先,您应该获得Keystone令牌,并且还将从结果中获得项目ID。
curl -s -X POST [your_auth_url]/v2.0/tokens
-H "Content-Type: application/json"
-d '{"auth": {"tenantName": "'"admin"'", "passwordCredentials":
{"username": "'"admin"'", "password": "'"password"'"}}}' | python -m json.tool
例如,[your_auth_url] = https://127.0.0.1:5000
P.S。这是使用不推荐使用的v2.0
Keystone auth。对于v3
,您需要将v2.0
更改为v3
,并添加project_domain_name
和user_domain_name
以及用户名,密码。详细信息:https://docs.openstack.org/keystone/pike/api_curl_examples.html#v3-api-examples-using-curl
之后,您将获得project_id
和token
。您可以列出图像,口味,按键等。
然后,您要启动一个实例:
curl -X POST -H "X-Auth-Token:$1" -H "Content-Type: application/json" -d '
{
"server": {
"name": "UsingcUrl",
"imageRef": "[your_image_id]",
"flavorRef": "[your_flavor_id]",
"key_name" : "[your_keypair_name]"
}
}' http://127.0.0.1:8774/v2/[your_project_id]/servers | python -m json.tool
hth。
我正在尝试使用此命令,现在我看到"网络"必须是一个对象。
curl -X POST -H "X-Auth-Token:$Token" -H "Content-Type: application/json" -d '{{"server": {"name": "UsingcUrl","imageRef": "c6839d78-1bc1-4661-9be3-3e9252f0c227","flavorRef": "e07fb38a-1e23-4b92-a1ff-c2fce2d97963","key_name" : "NEWKEY"}}{"networks": {"name": "89c2d870-1cfe-424a-9095-50d60e7b2538"}}}' http://$AUTH_URL:8774/v2/$ID_PROJECT/servers | python -m json.tool
但我收到此消息:
{
"badRequest": {
"code": 400,
"message": "Malformed request body"
}}