Python-selvpcclientライブラリ





Virtual Private Cloudサービスとの便利な対話のために、selvpcclientライブラリを開発しました 。 Pythonで記述されており、API全体をカバーしているため、プログラムコードまたはコンソールからプロジェクト、クォータ、リソースを管理できます。



仕事の準備



  1. 次のコマンドを使用して、pypiからライブラリをダウンロードします。



    pip install python-selvpcclient
          
          



  2. クラウドを操作するためのトークンAPIを取得します (たとえば、「xxxxvGBYVXcQ3q86zQCGxgvk_42069」という形式のキー)
  3. 現在のAPI URLを取得します (例: api.selectel.ru/vpc/resell/v2)


注:APIライブラリを使用する場合、APIのURLとバージョンは個別に指定されます!


ライブラリの使用



ライブラリが正常にインストールされたら、インポートして初期化する必要があります。



 from selvpcclient.client import Client, setup_http_client SEL_TOKEN=YOUR_API_TOKEN_HERE SEL_URL="https://api.selectel.ru/vpc/resell" SEL_API_VERSION=2 http_client = setup_http_client(api_url=SEL_URL, api_version=SEL_API_VERSION, api_token=SEL_TOKEN) selvpc = Client(client=http_client)
      
      





selvpcオブジェクトには次のフィールドがあります。





フィールドには次のメソッドがあります。





プロジェクトを作成してクォータを設定する



プロジェクトを作成するときに、基本クォータを設定し、Windows Server 2012のライセンスを追加します。



 project = selvpc.projects.create("Bonnie")
      
      



注:また、ライブラリバージョン1.1から、APIから「裸の」json応答を取得できます。これには、return_rawキーを渡す必要があります。



 project_json = selvpc.projects.create("Clyde", return_raw=True)
      
      





project_jsonには次の値が含まれます。



 { "name": "Clyde", "id": "f3504dc929ee40e5a296143218bf435d", "url": "https://xxxx.selvpc.ru", "enabled": True }
      
      





この操作の結果は、補助メソッド(削除、更新など)を持つ「Project」クラスのオブジェクトになります。



次に、作成したプロジェクトのクォータを設定します。



 "quotas": { "compute_cores": [ { "region": "ru-1", "zone": "ru-1a", "value": 10 } ], "compute_ram": [ { "region": "ru-1", "zone": "ru-1a", "value": 1024 } ] } } # via object project.update_quotas(quotas) # via quotas manager quotas = client.quotas.update(project.id, quotas=quotas)
      
      







ライセンスを追加します。



 "licenses": [{ "region": "ru-1", "quantity": 1, "type": "license_windows_2012_standard" }] } # via object project.add_license(license) # via licenses manager licenses = selvpc.licenses.add(project.id, licenses=licenses)
      
      





CLI



selvpcコンソールアプリケーションはライブラリに付属しています。 コンソールアプリケーションを作成するためのフレームワークであるpython-cliffに基づいています。



python-cliffの詳細については、 こちらをご覧ください



仕事の準備



クラウドを使用したコンソールアプリケーションには、API URLとトークンが必要です。



コンソールアプリケーションは、対応する環境変数SEL_URLおよびSEL_TOKENから、または呼び出し中に渡された引数(--url URL、-token TOKEN)のいずれかの方法でそれらを受信できます。

注:デフォルトでは、ライブラリはAPIバージョン2で動作するように既に設定されています; SEL_API_VERSION / --api-versionは省略できます。


注:情報が引数を介して渡され、環境変数に存在する場合、優先度は引数に与えられます。


 export SEL_TOKEN="xxxxvGBYVXcQ3q86zQCGxgvk_42069" export SEL_URL="https://api.selectel.ru/vpc/resell" export SEL_API_VERSION=2 selvpc --url "https://api.selectel.ru/vpc/resell" --token "xxxxvGBYVXcQ3q86zQCGxgvk_42069" project list
      
      





チーム



コマンドはOpenStackコンソールクライアントの標準です。



  1. オブジェクトを作成するには-* create(たとえば、プロジェクトの作成);
  2. オブジェクトを更新するには-*更新(たとえば、ユーザー更新);
  3. オブジェクトのリストを取得するには-*リスト(ライセンスリストなど)。
  4. オブジェクトを削除するには-*削除(サブネットの削除など)。


ここで、*はオブジェクトのキー名です:「プロジェクト、ユーザー、ロール、floatingip、サブネット、vrrp、ライセンス」。



たとえば、project createコマンドを使用してプロジェクトを作成します。



 selvpc project create -n awesome
      
      





プロジェクトのリストを取得します。



 selvpc project list +----------------------------------+----------+-------------------------+---------+ | id | name | url | enabled | +----------------------------------+----------+-------------------------+---------+ | f3504dc929ee40e5a296143218bf435d | awesome | https://xxxxx.selvpc.ru | True | +----------------------------------+----------+-------------------------+---------+
      
      







コンソールでコマンドを入力すると、使用可能なコマンドのリストをいつでも取得できます。



 selvpc help Commands: ... capabilities show traffic Show available traffic values complete print bash completion command floatingip add Create new floatingip IP address floatingip delete Delete floatingip IP floatingip list List floatingip IP ...
      
      





Ubuntu 16 x64ベースの仮想マシンの作成



コンソールクライアントを使用して仮想マシンを作成する方法の詳細な例を考えてみましょう。



アクションの一般的なシーケンスは次のようになります。



  1. プロジェクトとユーザーを作成し、ロールを追加します。
  2. リソースを割り当てます。
  3. 環境の準備。
  4. 仮想マシンを作成します。


プロジェクトを作成する



プロジェクトを作成します。



 selvpc project create -n "another-project" +---------+----------------------------------+ | Field | Value | +---------+----------------------------------+ | id | 96063b0c4a71443c8a842c647bdab316 | | name | "another-project" | | url | https://xxxxx.selvpc.ru | | enabled | True | +---------+----------------------------------+
      
      







まだユーザーがいないため、作成します。



 selvpc user create --name "T-Rex" --password "c1017e8c8fd14b7e8057618a882240df" +---------+----------------------------------+ | Field | Value | +---------+----------------------------------+ | id | 052027b58a3f49e390c3849d6697e2f3 | | name | "T-Rex" | | enabled | True | +---------+----------------------------------+
      
      





ユーザー「T-Rex」(052027b58a3f49e390c3849d6697e2f3)をプロジェクト「another-project」(96063b0c4a71443c8a842c647bdab316)に追加します。



 selvpc role add -p 96063b0c4a71443c8a842c647bdab316 -u 052027b58a3f49e390c3849d6697e2f3 +------------+----------------------------------+ | Field | Value | +------------+----------------------------------+ | project_id | 96063b0c4a71443c8a842c647bdab316 | | user_id | 052027b58a3f49e390c3849d6697e2f3 | +------------+----------------------------------+
      
      







リソースを割り当てます



新しいマシンには、1コア、512 MBのメモリ、および5 GBのディスクを割り当てます。



現在利用可能なリソースは、次のコマンドを使用して取得できます。



 selvpc capabilities show resources +-------------------------------+-------------+----------+------------+ | name | quota_scope | quotable | unbillable | +-------------------------------+-------------+----------+------------+ | compute_cores | zone | True | True | | compute_ram | zone | True | True | | volume_gigabytes_fast | zone | True | False | +-------------------------------+-------------+----------+------------+
      
      





プロジェクトのクォータは、「selvpc quota set」コマンドを使用して設定できます(引数の説明は、ヘルプ「selvpc _help_ quota set」で確認できます)。



 selvpc quota set 96063b0c4a71443c8a842c647bdab316 --region ru-1 --zone ru-1a --value 1 --resource compute_cores selvpc quota set 96063b0c4a71443c8a842c647bdab316 --region ru-1 --zone ru-1a --value 512 --resource compute_ram selvpc quota set 96063b0c4a71443c8a842c647bdab316 --region ru-1 --zone ru-1a --value 5 --resource volume_gigabytes_fast +----------------------------+--------+-------+-------+ | resource | region | zone | value | +----------------------------+--------+-------+-------+ | compute_cores | ru-1 | ru-1a | 1 | | compute_ram | ru-1 | ru-1a | 512 | | volume_gigabytes_fast | ru-1 | ru-1a | 5 | +----------------------------+--------+-------+-------+
      
      







オープンスタッククライアントを介してクラウドと対話するには、ログインする必要があります。



ユーザーの利便性のために、RCファイルを提供しています(コンソールクライアントがIdentity API v3にログインできるスクリプトです)。



スクリプトを取得するには、次を実行する必要があります。



  1. プロジェクトコントロールパネルに行きます。
  2. 作業するプロジェクトを開きます。
  3. [ アクセス ]タブをクリックします。
  4. ユーザーを選択します。
  5. 地域を選択します。
  6. [ ダウンロード ]ボタンをクリックします。






RC.shの内容の



 export OS_AUTH_URL="https://api.selvpc.ru/identity/v3" export OS_IDENTITY_API_VERSION="3" export OS_VOLUME_API_VERSION="2" export OS_PROJECT_DOMAIN_NAME='xxxx' export OS_PROJECT_ID='96063b0c4a71443c8a842c647bdab316' export OS_TENANT_ID='96063b0c4a71443c8a842c647bdab316' export OS_REGION_NAME='ru-1' export OS_USER_DOMAIN_NAME='xxxx' export OS_USERNAME='T-Rex' export OS_PASSWORD='c1017e8c8fd14b7e8057618a882240df'
      
      





注:変数「OS_PASSWORD」には、デモ用に明示的に初期化されているため、元のスクリプトのパスワードは含まれません。 パスワードを決して磨かない-それは安全ではありません!
スクリプトをロードした後、sourceコマンドで実行する必要があります。



 source RC.sh
      
      





環境の準備



この例では、 Ubuntu 16.04 LTS 64ビットイメージを使用します。



利用可能な画像のリストを取得します。



 openstack image list +--------------------------------------+---------------------------------+--------+ | ID | Name | Status | +--------------------------------------+---------------------------------+--------+ | 9feac917-f155-4013-b2fa-f5c8b72fd33c | Ubuntu 16.04 LTS 64-bit | active | +--------------------------------------+---------------------------------+--------+
      
      





イメージに基づいてディスクを作成します。



 openstack volume create ubuntu-volume --image "9feac917-f155-4013-b2fa-f5c8b72fd33c" --size 5 +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | id | f79c0d35-f54c-4b6a-82ad-1764e425eec8 | +---------------------+--------------------------------------+
      
      





マシンを作成するには、 フレーバー (マシンを作成するための構成)も必要です。



新しいプライベート構成を作成します。



 openstack flavor create --private --ram 512 --vcpus 1 my-flavor +----------------------------+--------------------------------------+ | Field | Value | +----------------------------+--------------------------------------+ | id | 006f7e84-f957-4764-a3a7-db8575c54ba7 | | name | my-flavor | | os-flavor-access:is_public | False | | ram | 512 | | vcpus | 1 | +----------------------------+--------------------------------------+
      
      





仮想マシンを作成する



最後に、「server-1」という大きな名前で仮想マシンを作成します。



 openstack server create --wait --volume "f79c0d35-f54c-4b6a-82ad-1764e425eec8" --flavor "006f7e84-f957-4764-a3a7-db8575c54ba7" "server-1"
      
      





注:プロジェクトに複数のサブネットがある場合、仮想マシンの作成時に使用するサブネットを指定する必要があります。




 openstack subnet list +--------------------------------------+----------------+ | Network | Subnet | +--------------------------------------+----------------+ | a220c08e-a63f-48b8-aca5-563136ee9131 | 192.168.0.0/24 | | afc24500-65f0-4d28-ada0-773d92820850 | 192.168.0.0/24 | +--------------------------------------+----------------+ openstack server create --wait --volume "f79c0d35-f54c-4b6a-82ad-1764e425eec8" --flavor "006f7e84-f957-4764-a3a7-db8575c54ba7" --network a220c08e-a63f-48b8-aca5-563136ee9131 "server-1"
      
      





おわりに



ライブラリの使用中に問題が発生した場合、または何かを変更したい場合は、問題を開いてください。

注:執筆時点でのライブラリの現在のバージョンは1.0です。


便利なリンク



githubのPython-selvpcclientライブラリ



VPC APIドキュメント



クラウドキー



All Articles