入门

openstacksdk 旨在与任何 OpenStack 云进行通信。为此,它需要一个配置文件。openstacksdk 倾向于使用 clouds.yaml 文件,但也可以使用环境变量。 clouds.yaml 文件应由您的云提供商或部署工具提供。一个例子

clouds:
 mordred:
   region_name: Dallas
   auth:
     username: 'mordred'
     password: XXXXXXX
     project_name: 'demo'
     auth_url: 'https://identity.example.com'

有关配置 openstacksdk 的更多信息,请参见 配置 OpenStack SDK 应用程序

在提供足够的配置后,您可以使用 openstacksdk 与您的云进行交互。openstacksdk 由三层组成。大多数用户将使用 代理 层。使用上述 clouds.yaml,考虑列出服务器

import openstack

# Initialize and turn on debug logging
openstack.enable_logging(debug=True)

# Initialize connection
conn = openstack.connect(cloud='mordred')

# List the servers
for server in conn.compute.servers():
    print(server.to_dict())

openstacksdk 还包含一个基于逻辑操作的更高层次的

import openstack

# Initialize and turn on debug logging
openstack.enable_logging(debug=True)

# Initialize connection
conn = openstack.connect(cloud='mordred')

# List the servers
for server in conn.list_servers():
    print(server.to_dict())

该层的好处主要体现在更复杂的操作中,这些操作需要多个步骤,并且步骤在不同提供商之间有所不同。例如

import openstack

# Initialize and turn on debug logging
openstack.enable_logging(debug=True)

# Initialize connection
conn = openstack.connect(cloud='mordred')

# Upload an image to the cloud
image = conn.create_image(
    'ubuntu-trusty', filename='ubuntu-trusty.qcow2', wait=True)

# Find a flavor with at least 512M of RAM
flavor = conn.get_flavor_by_ram(512)

# Boot a server, wait for it to boot, and then do whatever is needed
# to get a public IP address for it.
conn.create_server(
    'my-server', image=image, flavor=flavor, wait=True, auto_ip=True)

最后,还有低级别的 资源 层。这为 REST API 支持的基本 CRUD 操作提供支持,并且是其他层的基本构建块。通常您不需要直接使用它

import openstack
import openstack.config.loader
import openstack.compute.v2.server

# Initialize and turn on debug logging
openstack.enable_logging(debug=True)

# Initialize connection
conn = openstack.connect(cloud='mordred')

# List the servers
for server in openstack.compute.v2.server.Server.list(session=conn.compute):
    print(server.to_dict())