2015年12月12日土曜日

Pythonを使ってBlue Boxにインスタンスを作成してみる

環境変数の定義(コマンドプロンプトを起動したら1回は実行する)

env.bat

set OS_AUTH_URL=https://icos-sea.openstack.blueboxgrid.com:5001/v2.0
set OS_TENANT_ID=162342da7f4b42adb7adfcb47e3746fd
set OS_USERNAME=matsuos
set OS_PASSWORD=XXXXXXXX
set OS_VERSION=2


環境変数を構造体に渡すためのサブルーチン(これは直接実行しない、呼び出される)

credentials.py

#!/usr/bin/env python
import os
def get_nova_creds():
    d = {}
    d['version'] = os.environ['OS_VERSION']
    d['username'] = os.environ['OS_USERNAME']
    d['api_key'] = os.environ['OS_PASSWORD']
    d['auth_url'] = os.environ['OS_AUTH_URL']
    d['tenant_id'] = os.environ['OS_TENANT_ID']
    return d


インスタンスを作成するPythonコード(これを実行する)

create_environment.py

import os
import time
import novaclient.client as nvclient
from credentials import get_nova_creds
creds = get_nova_creds()
nova = nvclient.Client(**creds)
image = nova.images.find(name="ubuntu-14.04")                 ・・・実際のイメージ名に合わせる
flavor = nova.flavors.find(name="m1.tiny")                          ・・・実際のフレーバ名に合わせる
net = nova.networks.find(label="internal")                           ・・・実際のネットワーク名に合わせる
nics = [{'net-id': net.id}]
instance = nova.servers.create(
    name="matsuos-2",                                                   ・・・作成したいインスタンス名
    image=image,
    flavor=flavor,
    nics=nics)

# Poll at 5 second intervals, until the status is no longer 'BUILD'
status = instance.status
while status == 'BUILD':
    time.sleep(5)
    # Retrieve the instance again so the status field updates
    instance = nova.servers.get(instance.id)
    status = instance.status
print "status: %s" % status



実行結果は次のような感じになります。



ダッシュボードを確認すると確かにmatsuos-2という名前のインスタンスが作成されている。


0 件のコメント:

コメントを投稿