入门¶
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())