Pyrax API:使用引导卷创建 Compute/Memory 风格时出错
Pyrax API: Error in creating Compute/Memory flavors with boot-volumes
关于背景知识:Compute/Memory Rackspace 中的 nova 实例不带有本地根卷,Rackspace 有一个政策来创建它们与外部 SSD 可启动卷。现在的问题是:
我正在尝试使用 pyrax api 在 Rackspace 中创建一个计算风格实例,Rackspace 在其 UI(https://support.rackspace.com/how-to/boot-a-server-from-a-cloud-block-storage-volume/) 中的方式如下:
pyrax.cloudservers.servers.create(hostname,image.id,
flavor.id,block_device_mapping,
security_groups=security_groups,
nics=networks, key_name=key)
在哪里
block_device_mapping = {"vda": "59fb72d5-0b33-46c2-b10b-33fed25c5f74:::1"},
长 32 位数字是我在创建服务器之前使用
创建的卷的 volume_id
pyrax.cloud_blockstorage.create(name=volume_name, size=volume_size,
volume_type=volume_type).
我收到一条错误消息:
Policy doesn't allow memory_flavor:create:image_backed to be performed.(HTTP 403).
同样对于带有本地根卷的其他口味(不用说我没有参考那些带有 'block_device_mapping' 参数的),pyrax api 例如创建工作正常。
github 上的 pyrax/rackspace 回购中有一个关于该主题的小线程:https://github.com/rackspace/pyrax/issues/484 讨论了这个问题。
有什么我想念的吗?
创建可引导卷时,应指定 image_id(OS 映像 id) 以引导卷:
pyrax.cloud_blockstorage.create(name=volume_name, size=volume_size,
volume_type=volume_type,image=image.id)
此外 block_device_map 需要更多参数:
block_device_map = [{
'boot_index': '0',
'source_type': 'image',
'destination_type': 'volume',
'delete_on_termination': True,
'uuid': image.id,
'volume_size': int(requested_size),
'device_name': 'vda'
}]
这是实际上没有收到 403 Forbidden 错误的最后一个问题:
创建服务器实例时,不要在 pyrax 调用参数中再次指定映像 id,否则 pyrax 会混淆启动实例的映像。因此,只需在 pyrax.cloudservers.servers.create() 的参数中将 None 到 image_id 作为:
pyrax.cloudservers.servers.create(
hostname,
image=None,
flavor=flavor.id,
block_device_mapping_v2=block_device_map,
security_groups=security_groups,
nics=networks,
key_name=key)
关于背景知识:Compute/Memory Rackspace 中的 nova 实例不带有本地根卷,Rackspace 有一个政策来创建它们与外部 SSD 可启动卷。现在的问题是: 我正在尝试使用 pyrax api 在 Rackspace 中创建一个计算风格实例,Rackspace 在其 UI(https://support.rackspace.com/how-to/boot-a-server-from-a-cloud-block-storage-volume/) 中的方式如下:
pyrax.cloudservers.servers.create(hostname,image.id,
flavor.id,block_device_mapping,
security_groups=security_groups,
nics=networks, key_name=key)
在哪里 block_device_mapping = {"vda": "59fb72d5-0b33-46c2-b10b-33fed25c5f74:::1"}, 长 32 位数字是我在创建服务器之前使用
创建的卷的 volume_idpyrax.cloud_blockstorage.create(name=volume_name, size=volume_size,
volume_type=volume_type).
我收到一条错误消息:
Policy doesn't allow memory_flavor:create:image_backed to be performed.(HTTP 403).
同样对于带有本地根卷的其他口味(不用说我没有参考那些带有 'block_device_mapping' 参数的),pyrax api 例如创建工作正常。 github 上的 pyrax/rackspace 回购中有一个关于该主题的小线程:https://github.com/rackspace/pyrax/issues/484 讨论了这个问题。 有什么我想念的吗?
创建可引导卷时,应指定 image_id(OS 映像 id) 以引导卷:
pyrax.cloud_blockstorage.create(name=volume_name, size=volume_size,
volume_type=volume_type,image=image.id)
此外 block_device_map 需要更多参数:
block_device_map = [{
'boot_index': '0',
'source_type': 'image',
'destination_type': 'volume',
'delete_on_termination': True,
'uuid': image.id,
'volume_size': int(requested_size),
'device_name': 'vda'
}]
这是实际上没有收到 403 Forbidden 错误的最后一个问题: 创建服务器实例时,不要在 pyrax 调用参数中再次指定映像 id,否则 pyrax 会混淆启动实例的映像。因此,只需在 pyrax.cloudservers.servers.create() 的参数中将 None 到 image_id 作为:
pyrax.cloudservers.servers.create(
hostname,
image=None,
flavor=flavor.id,
block_device_mapping_v2=block_device_map,
security_groups=security_groups,
nics=networks,
key_name=key)