共计 11790 个字符,预计需要花费 30 分钟才能阅读完成。
丸趣 TV 小编给大家分享一下如何通过 API 创建云服务器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
通过 API 创建云服务器的 9 个步骤(以指定镜像方式创建云服务器为例)步骤一:确定待创建云服务器所在的可用区。
1、查询可用区。
(1)接口相关信息
URI 格式:GET /v2.1/{project_id}/os-availability-zone
(2)请求示例
GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-availability-zone
(3)响应示例
{
availabilityZoneInfo : [
{
hosts : null,
zoneState : {
available : true
},
zoneName : zone_01
},
{
hosts : null,
zoneState : {
available : true
},
zoneName : zone_01
}
]
}
2、根据实际需要选择可用区,并记录可用区的 zoneName。
步骤二:确定待创建云服务器的规格。
1、查询云服务器规格信息。
(1)接口相关信息
URI 格式:GET/v2.1/{project_id}/flavors/detail{?minDisk,minRam,is_public,sort_key,sort_dir}
其中,“?”后的字段为查询规格时可选的查询检索参数。
(2)请求示例
GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/flavors/detail
(3)响应示例
{
flavors : [
{
name : c1.2xlarge ,
links : [
{
href : https://xxx/v2.1/74610f3a5ad941998e91f076297ecf27/flavors/c1.2xlarge ,
rel : self
},
{
href : https://xxx/74610f3a5ad941998e91f076297ecf27/flavors/c1.2xlarge ,
rel : bookmark
}
],
ram : 8192,
OS-FLV-DISABLED:disabled : false,
vcpus : 8,
swap : ,
os-flavor-access:is_public : true,
rxtx_factor : 1,
OS-FLV-EXT-DATA:ephemeral : 0,
disk : 0,
id : c1.2xlarge
}
}
2、根据实际需要选择规格,并记录规格的 ID。
步骤三:确定待创建云服务器使用的镜像。
1、查询镜像。
(1)接口相关信息
URI 格式:GET /v2.1/{project_id}/images/detail
(2)请求示例
GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/images/detail
(3)响应示例
{
images : [
{
OS-EXT-IMG-SIZE:size : 0,
metadata : {
__os_type : Linux ,
hw_vif_multiqueue_enabled : true ,
__imagetype : gold ,
__quick_start : true ,
virtual_env_type : FusionCompute ,
__support_xen : true ,
__support_kvm : true ,
__image_source_type : uds ,
__platform : EulerOS ,
__os_version : EulerOS 2.2 64bit ,
__os_bit : 64 ,
__isregistered : false
},
created : 2018-05-14T06:13:50Z ,
minRam : 0,
name : DBS-MySQL-Image_2.1.3.3 ,
progress : 100,
links : [
{
rel : self ,
href : https://None/v2.1/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4
},
{
rel : bookmark ,
href : https://None/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4
},
{
rel : alternate ,
href : https://None/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4 ,
type : application/vnd.openstack.image
}
],
id : 11e8f727-d439-4ed1-b3b8-33f46c0379c4 ,
updated : 2018-05-14T06:13:52Z ,
minDisk : 40,
status : ACTIVE
}
]
}
2、根据需要选择镜像,并记录镜像 ID。
步骤四:确定云服务器的网络信息。
1、查询网络。
(1)接口相关信息
URI 格式:GET /v2.1/{project_id}/os-networks
(2)请求示例
GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-networks
(3)响应示例
{
networks : [
{
id : 07a9557d-4256-48ae-847c-415a9c8f7ff6 ,
label : b_tt3_td1b ,
broadcast : null,
cidr : null,
dns1 : null,
dns2 : null,
gateway : null,
netmask : null,
cidr_v6 : null,
gateway_v6 : null,
netmask_v6 : null
}
]
}
2、根据需要选择网络,并记录网络 ID。
步骤五:设置密钥对登录方式。
如需设置为密码登录方式,请直接跳转至步骤七。
1、创建密钥对。
(1)接口相关信息
URI 格式:POST /v2.1/{project_id}/os-keypairs
(2)请求示例
POST: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-keypairs
Body:
{
keypair : {
type : ssh ,
name : demo1 ,
user_id : fake
}
}
(3)响应示例
{
keypair : {
public_key : ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrR5Gcwlh6ih7JOvzIUuQxS5qzWWPMYHeDXkDKSQ9W5pumOV05SiO3WCswnaQ5xMdOl31mNiHtwlwq9dJi7X6jJBB2shTD+00G5WuwkBbFU4CLvt1B44u0NUiaTJ35NAvW2/4XvpXm9OwiQ3B5ge6ZY7Esi38Unh+pkbhPkYxNBCK8yoOlojQhWs75abdxZBi811/8RwLcNiFiocA2RGxtRjBdpEScj+1TU+OcfZdQnr0AFbO11z7yxfIygwwzVTgUuJNbMbKHStQqRbklfMlHY4RBPQgb7RN/YaXKTQSXT84k+D9xlDNo7Wj4fwOJTOz/s/PvbIOqjRHt9D6Y4IKd Generated-by-Nova\n ,
private_key : -----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAq0eRnMJYeYoeyTr8yFLkMUuas1ljzGB3g15AykkPVuabpjld\nOUojt1grMJ2kOcTHTpd9ZjYh7cJcKvXSYu1+oyQQdrIUw/tNBuVrsJAWxVOAi77d\nQeOLtDVImkyd+TQL1tv+F76V5vTsIkNweYHumWOxLIt/FJ4fqZG4T5GMTQQivMqD\npaI0IVrO+Wm3cWQYvNdf/EcC3DYhYqHANkRsbUYwXaREnI/tU1PjnH2XUJ69ABWz\ntdc+8sXyMoMMM1U4FLiTWzGyh0rUKkW5JXzJR2OEQT0IG+0Tf2Glyk0El0/OJPg/\ncZQzaO1o+H8DiUzs/7Pz72yDqo0R7fQ+mOCCnQIDAQABAoIBAA6/c9dGmK2mae4z\nyQ5KrOFdvC1TNhej+sZx+CwyzEJUSvSuHcvQCXFBAz8FY92hhvPKcX66jINXZ+4/\nCmWAQ5YyhcRiow0Y91HvsS0bywoknX3q6kxBFodmyyCWFkgd5iMTADb1Lx0a27Y7\njlS4Dl5gyiGmxUN2Ng24wWEAjE8ZNuI0lrtr5IZKp+s5IAi/rb5AG/mL7EzicE8c\nmGP+QAa+nzwhAwNhFwVID230xen/ZcoL1d77hxeARNqJUxoR25gwJd6Ebg2y9pDW\nVu6cbbzgdGUCfQYlMEoAamAkCswOsDpVDBXwQnt2A537n6Wq2bgYIKusHr9thtxP\n/5ubQLUCgYEA4zYuBG2vtLHnvce26P8o2j1xcJS9K0ozkah9JFl3hqFN0sAqLlz7\n/Fm1jA4kzHJS3d0UqP3AMDxY3HkIqCn4Be7lqeAAe2AfqkOZpt9MDNv4VwKe9sPb\nViW1qjL3FxziLC/YWTRNSlpwRjqJJGhA+UQt8rOia1k/zXmrEs7bXLcCgYEAwPsu\nK3j5QoAiziYVMYf5iCzWwAM9Ljpf9gw23lefTdIzhhfFtJplVRSyxRGU0UZ84GMI\nTd5zmcIF/1KUfhqmeiQzz6NIPEYEReahjpQ/sOH/Gk5Rwr3QwYPrwAu5x+kk/SRi\nKPkqw7APTR0sMQBcUq+ZYwGYLGPMdd1zUdLfb0sCgYBkuz11iydtxb3G/obSD2WO\nM9VaIycmzRPFzNwGRH/gOR0mhTluKp0wyJjbSd34oeqpH/2r2ivddrOysxoqa8jg\n4IQDZyLvj7MaKjQxrieqP89+y9Or9TMFo1xB46x2G8EN8/xHuA9YGnZSPFtWv72m\nhRqV0hv82amWsA0vHnRUSwKBgDsKHXvrTMbNkNhkykMXCH5iyWiBFSyZa1ZJMlgf\nknsqfdzeVPwF6E55QKAN2uuTlwzG/3ljPxahR1hvmUJjQN9JSBiUKbtW6GPCRVbr\nf/jLi1Iu99COZdluVKeybqn8Z/aSNP24DR9FM8kxzZ1IMPaTBmhFypp6BclhcLBt\nxTG1AoGAfcrkVbV1SOy7fECUtMpUECcw0yU4GWj3sR2RbII63C500RVYQlUpUaRR\naANbASHTVR4myOKtGSxEUhAQHlxFDwsDL7W3gzAqTFbEDp1xAAUyT/nkOAhQjEm4\nORFdDETeXLQG1KMUj+8AdnhfYp3JTdft6rmPpZEBUFiCAUMAvb0=\n-----END RSA PRIVATE KEY-----\n ,
user_id : f79791beca3c48159ac2553fff22e166 ,
name : demo1 ,
fingerprint : 57:a7:a2:ed:5f:aa:e7:54:62:2e:bb:e7:92:22:cb:40
}
}
2、导入密钥。
(1)接口相关信息
URI 格式:POST /v2.1/{project_id}/os-keypairs
(2)请求示例
POST: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/os-keypairs
Body:
{
keypair : {
public_key : ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDY8wMTdBYiJgi62o6eShoOlSKx3CZ3cE6PHisDblfK3Y0Bg7EHV7iV9c74pqsrIhK0xuGUuO1NxDQWbkwLTPN4F9Iy5CIYohLuMIpbln6LDtfRPpdhEh4lxL8MM61gyfpKzeKkwkEpSFj27Rgh7zCyJgBpkA2A0HTP737UlitahL4faCWDIS+Vj6mbcfkWiMhuMCzTZgSKAZ4PfoG4B5HJhR52C6A4XLiQFT9heh9gnIsIG+uTogTKUbcJKuN7M6AraJpul6eHhV9YI4433sDmuiBF/njvreVPWwAHlAkgT9I8q1T/cfEFiwzXpdGbkK5O8NC7K+qNbbdKihlahONt Generated-by-Nova\n ,
type : ssh ,
name : demo2 ,
user_id : fake
}
}
(3)响应示例
{
keypair : {
public_key : ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDY8wMTdBYiJgi62o6eShoOlSKx3CZ3cE6PHisDblfK3Y0Bg7EHV7iV9c74pqsrIhK0xuGUuO1NxDQWbkwLTPN4F9Iy5CIYohLuMIpbln6LDtfRPpdhEh4lxL8MM61gyfpKzeKkwkEpSFj27Rgh7zCyJgBpkA2A0HTP737UlitahL4faCWDIS+Vj6mbcfkWiMhuMCzTZgSKAZ4PfoG4B5HJhR52C6A4XLiQFT9heh9gnIsIG+uTogTKUbcJKuN7M6AraJpul6eHhV9YI4433sDmuiBF/njvreVPWwAHlAkgT9I8q1T/cfEFiwzXpdGbkK5O8NC7K+qNbbdKihlahONt Generated-by-Nova\n ,
user_id : f79791beca3c48159ac2553fff22e166 ,
name : demo2 ,
fingerprint : dd:44:45:49:d9:f6:4f:c0:24:2d:81:aa:c4:4b:83:c2
}
}
2、记录响应消息体中的 name 信息。如本例中为“demo2”。
步骤六:创建密钥对登录鉴权的云服务器。
(1)接口相关信息
URI 格式:POST /v2.1/{project_id}/servers
说明:
本示例是指定 image 创建云服务器,因此:
● block_device_mapping_v2.1 中,“source_type”需设置为“image”,“uuid”设置为选择的镜像 ID,“destination_type”设置为“volume”,“boot_index”设置为“0”。
●“volume_size”应大于等于镜像元数据中指定的最小值。
(2)请求示例
POST: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers
Body:
{
server : {
flavorRef : c1.large ,
name : zttestvm1 ,
block_device_mapping_v2.1 : [{
source_type : image ,
destination_type : volume ,
volume_type : SATA ,
volume_size : 40 ,
delete_on_termination : true ,
uuid : 11e8f727-d439-4ed1-b3b8-33f46c0379c4 ,
boot_index : 0
}],
networks : [{
uuid : fb68519f-a7c0-476e-98d4-2e4cf6de6def
}],
key_name : demo2 ,
availability_zone : az_test_01
}
}
(3)响应示例
{
server : {
security_groups : [
{
name : default
}
],
OS-DCF:diskConfig : MANUAL ,
links : [
{
rel : self ,
href : https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/6d311127-bce1-48db-bf0f-cac9f8f7f077
},
{
rel : bookmark ,
href : https://None/74610f3a5ad941998e91f076297ecf27/servers/6d311127-bce1-48db-bf0f-cac9f8f7f077
}
],
id : 6d311127-bce1-48db-bf0f-cac9f8f7f077 ,
adminPass : WcC4QoVZPXpV
}
}
步骤七:设置密码登录方式。
(1)使用非 cloud-init 镜像创建云服务器时,Windows 和 Linux 系统都使用“adminPass”参数实现密码注入。
(2)使用 cloud-init 镜像创建云服务器时:
l 对于 Linux 系统,只能使用“user_data”进行密码注入,“user_data”字符串长度小于 65535,且必须是 base64 加密的;
l 对于 Windows 系统,只能通过元数据“admin_pass”进行密码注入。
步骤八:创建密码方式登录鉴权的弹性云服务器。
说明:
本示例是指定 image 创建弹性云服务器,因此:
(1)block_device_mapping_v2.1 中,“source_type”需设置为“image”,“uuid”设置为选择的镜像 ID,“destination_type”设置为“volume”,“boot_index”设置为“0”。
(2)“volume_size”应大于等于镜像元数据中指定的最小值。
1、创建非 cloud-init 镜像、密码方式登录鉴权的弹性云服务器。
(1)接口相关信息
URI 格式:POST /v2.1/{project_id}/servers
(2)请求示例
POST: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers
Body:
{
server : {
flavorRef : c1.large ,
name : zttestvm1 ,
adminPass : NOVAGLANCEI@123 ,
block_device_mapping_v2.1 : [{
source_type : image ,
destination_type : volume ,
volume_type : SATA ,
volume_size : 40 ,
delete_on_termination : true ,
uuid : 11e8f727-d439-4ed1-b3b8-33f46c0379c4 ,
boot_index : 0
}],
networks : [{
uuid : fb68519f-a7c0-476e-98d4-2e4cf6de6def
}],
availability_zone : az_test_01
}
}
(3)响应示例
{
server : {
security_groups : [
{
name : default
}
],
OS-DCF:diskConfig : MANUAL ,
links : [
{
rel : self ,
href : https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/73991cff-37c6-491a-9a8a-377397729fce
},
{
rel : bookmark ,
href : https://None/74610f3a5ad941998e91f076297ecf27/servers/73991cff-37c6-491a-9a8a-377397729fce
}
],
id : 73991cff-37c6-491a-9a8a-377397729fce ,
adminPass : NOVAGLANCEI@123
}
}
2、创建 cloud-init 镜像(以 Linux 为例)、密码方式登录鉴权的弹性云服务器。
(1)接口相关信息
URI 格式:POST /v2.1/{project_id}/servers
(2)请求示例
POST: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers
Body:
{
server : {
flavorRef : c1.large ,
name : zttestvm2 ,
user_data : IyEvYmluL2Jhc2gKZWNobyAncm9vdDokNiRuaERlcUIkajBkelVMbkFrbWo4bWlFREFzT0VONkVPdGg1RmdqWnQybUVWZVRocC5OVDJXelZVdzFuNzhnL3dNdDE0dVpSQ1V3LzhHS3VGdEViQ0lPQS5vN1BZQzEnIHwgY2hwYXNzd2QgLWU7 ,
block_device_mapping_v2.1 : [{
source_type : image ,
destination_type : volume ,
volume_type : SATA ,
volume_size : 40 ,
delete_on_termination : true ,
uuid : 11e8f727-d439-4ed1-b3b8-33f46c0379c4 ,
boot_index : 0
}],
networks : [{
uuid : fb68519f-a7c0-476e-98d4-2e4cf6de6def
}],
availability_zone : az_test_01
}
}
(3)响应示例
{
server : {
security_groups : [
{
name : default
}
],
OS-DCF:diskConfig : MANUAL ,
links : [
{
rel : self ,
href : https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/7c11f362-cc96-4306-85b6-b432a639ca5e
},
{
rel : bookmark ,
href : https://None/74610f3a5ad941998e91f076297ecf27/servers/7c11f362-cc96-4306-85b6-b432a639ca5e
}
],
id : 7c11f362-cc96-4306-85b6-b432a639ca5e ,
admin_pass : J3xMSivHCuq5
}
}
步骤九:确认云服务器创建成功。
(1)接口相关信息
URI 格式:GET /v2.1/{project_id}/servers/{server_id}
(2)请求示例
GET: https://{endpoint}/v2.1/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6
其中:
0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6 为创建的云服务器 UUID。
(3)响应示例
{
server : {
tenant_id : 74610f3a5ad941998e91f076297ecf27 ,
addresses : {
2a6f4aa6-d93e-45f5-a8cb-b030dbf8cd68 : [
{
OS-EXT-IPS-MAC:mac_addr : fa:16:3e:88:01:1b ,
OS-EXT-IPS:type : fixed ,
addr : 192.168.2.192 ,
version : 4
}
]
},
metadata : {},
OS-EXT-STS:task_state : null,
OS-DCF:diskConfig : MANUAL ,
OS-EXT-AZ:availability_zone : az_test_01 ,
links : [
{
rel : self ,
href : https://None/v2.1/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6
},
{
rel : bookmark ,
href : https://None/74610f3a5ad941998e91f076297ecf27/servers/0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6
}
],
OS-EXT-STS:power_state : 1,
id : 0c71c0da-8852-4c56-a1d1-3a9b9bcb6da6 ,
os-extended-volumes:volumes_attached : [
{
id : b551445a-e749-4d53-932a-638a455cb6c3
}
],
OS-EXT-SRV-ATTR:host : pod1_test_01 ,
image : {
links : [
{
rel : bookmark ,
href : https://None/74610f3a5ad941998e91f076297ecf27/images/11e8f727-d439-4ed1-b3b8-33f46c0379c4
}
],
id : 11e8f727-d439-4ed1-b3b8-33f46c0379c4
},
OS-SRV-USG:terminated_at : null,
accessIPv4 : ,
accessIPv6 : ,
created : 2018-05-25T01:47:11Z ,
hostId : b2792bef989888d2df1f51bff81de5ac58a4117f4e9ec3059c1a0410 ,
OS-EXT-SRV-ATTR:hypervisor_hostname : nova001@36 ,
key_name : null,
flavor : {
links : [
{
rel : bookmark ,
href : https://None/74610f3a5ad941998e91f076297ecf27/flavors/c1.large
}
],
id : c1.large
},
security_groups : [
{
name : default
}
],
config_drive : ,
OS-EXT-STS:vm_state : active ,
OS-EXT-SRV-ATTR:instance_name : instance-001883cd ,
user_id : f79791beca3c48159ac2553fff22e166 ,
name : zttestvm1 ,
progress : 0,
OS-SRV-USG:launched_at : 2018-05-25T01:47:55.755922 ,
updated : 2018-05-25T01:47:55Z ,
status : ACTIVE
}
}
以上是“如何通过 API 创建云服务器”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!