Openstackとpkgcloudの認証

2585 ワード

pkgcloudはopenstackの公式指定nodejsのSDKとしてMバージョンの大部分のapiをサポートすることができ、以下では主に認証(keystone)の面でv 2とv 3の2つのバージョンの違いについて述べる.
v2
Openstackはcurlを通過する方法を公式に提供しています.以下のようにします.
  $ curl -s -X POST $OS_AUTH_URL/tokens \
  -H "Content-Type: application/json" \
  -d '{"auth": {"tenantName": "'"$OS_PROJECT_NAME"'", "passwordCredentials": {"username": "'"$OS_USERNAME"'", "password": "'"$OS_PASSWORD"'"}}}' \
  | python -m json.tool


ここで、対応するプロジェクトがない場合はtenantNameを記入する必要はありません.その後の操作ではresponseで返されたtokenを要求パラメータとして使用し、期限切れに注意すればいいです.
pkgcloudでの対応方法は以下の通りです.
var pkgcloud = require('pkgcloud');
var cc = pkgcloud.compute.createClient({
    provider: 'openstack', // required
    username: '$user_name', // required
    password: '$user_pass', // required
    region: 'RegionOne', //     ,        RegionOne
    authUrl: '$auth_url' // required
});

取得するccオブジェクトは、例えばccなどの後続の操作を行うことができる.getServer()など
v3
v 3バージョンでは,対応するパラメータ構造が変化し,公式に提供されるcurl法は以下の通りである.
curl -s -X POST $auth_url/v3/auth/tokens \
  -H "Content-Type: application/json" \
  -d '{"auth": {
        "identity": {
            "methods": [
                "password"
            ],
            "password": {
                "user": {
                    "name": "$user_name",
                    "domain": {
                        "name": "Default"
                    },
                    "password": "$user_pass"
                }
            }
        }
    }}' \
  | python3 -m json.tool


要求されたパラメータにdomainのkeyが1つ追加されました.ここに「Default」と記入すればいいです.
pkgcloudの対応方法は以下の通りで、主にkeystoneAuthVersionをv 3に設定し、tenantIdとdomainIdを設定する必要がある.
var pkgcloud = require('pkgcloud');

var cc = pkgcloud.compute.createClient({
    provider: 'openstack', // required
    username: '$user_name', // required
    password: '$user_pass', // required
    region: 'RegionOne',
    keystoneAuthVersion: 'v3',
    domainId: 'Default',
    tenantId: 'fc6ac8c46d8147fd9ffa7a32e373ff9a',
    domainName: 'Default',
    authUrl: '$auth_url' // required
});


今のところこのsdkはまだ完璧な段階で、多くのものがwikiとdocに体現されていないので、openstackのAPIに対して少しの調査が必要で、しなければならない仕事はまだたくさんあります.