使用 OpenStack Compute¶
在使用 Compute 服务之前,您需要通过遵循 连接 用户指南来创建与您的 OpenStack 云的连接。这将为您提供在以下示例中使用的 conn 变量。
Compute 服务的核心资源是服务器。
列出服务器¶
一个 服务器 是一台虚拟机,它提供对云提供商正在运行的计算实例的访问。
def list_servers(conn):
print("List Servers:")
for server in conn.compute.servers():
print(server)
完整示例:compute 资源列表
列出镜像¶
一个 镜像 是您希望用于服务器的操作系统。
def list_images(conn):
print("List Images:")
for image in conn.compute.images():
print(image)
完整示例:compute 资源列表
列出风味¶
一个 风味 是服务器的资源配置。每个风味都是磁盘、内存、vCPU 和网络带宽的独特组合。
def list_flavors(conn):
print("List Flavors:")
for flavor in conn.compute.flavors():
print(flavor)
完整示例:compute 资源列表
列出网络¶
一个 网络 为服务器提供连接性。
def list_networks(conn):
print("List Networks:")
for network in conn.network.networks():
print(network)
完整示例:network 资源列表
创建密钥对¶
一个 密钥对 是 公钥密码学 的公钥和私钥。它们用于加密和解密连接到服务器时的登录信息。
def create_keypair(conn):
keypair = conn.compute.find_keypair(KEYPAIR_NAME)
if not keypair:
print("Create Key Pair:")
keypair = conn.compute.create_keypair(name=KEYPAIR_NAME)
print(keypair)
try:
os.mkdir(SSH_DIR)
except OSError as e:
if e.errno != errno.EEXIST:
raise e
with open(PRIVATE_KEYPAIR_FILE, 'w') as f:
f.write(str(keypair.private_key))
os.chmod(PRIVATE_KEYPAIR_FILE, 0o400)
return keypair
完整示例:compute 资源创建
创建服务器¶
最少情况下,服务器在创建时需要一个名称、一个镜像、一个风味和一个网络。您可以列出它们(如上所示)以发现这些属性的名称和 ID,然后使用 find 方法获取适当的资源。
理想情况下,您还应该使用密钥对创建服务器,以便可以使用私钥登录该服务器。
服务器启动需要时间,因此我们调用 wait_for_server 来等待它变为活动状态。
def create_server(conn):
print("Create Server:")
image = conn.image.find_image(IMAGE_NAME)
flavor = conn.compute.find_flavor(FLAVOR_NAME)
network = conn.network.find_network(NETWORK_NAME)
keypair = create_keypair(conn)
server = conn.compute.create_server(
name=SERVER_NAME,
image_id=image.id,
flavor_id=flavor.id,
networks=[{"uuid": network.id}],
key_name=keypair.name,
)
server = conn.compute.wait_for_server(server)
print(f"ssh -i {PRIVATE_KEYPAIR_FILE} root@{server.access_ipv4}")
完整示例:compute 资源创建