Openstackとpkgcloudの認証
2585 ワード
pkgcloudはopenstackの公式指定nodejsのSDKとしてMバージョンの大部分のapiをサポートすることができ、以下では主に認証(keystone)の面でv 2とv 3の2つのバージョンの違いについて述べる.
v2
Openstackはcurlを通過する方法を公式に提供しています.以下のようにします.
ここで、対応するプロジェクトがない場合はtenantNameを記入する必要はありません.その後の操作ではresponseで返されたtokenを要求パラメータとして使用し、期限切れに注意すればいいです.
pkgcloudでの対応方法は以下の通りです.
取得するccオブジェクトは、例えばccなどの後続の操作を行うことができる.getServer()など
v3
v 3バージョンでは,対応するパラメータ構造が変化し,公式に提供されるcurl法は以下の通りである.
要求されたパラメータにdomainのkeyが1つ追加されました.ここに「Default」と記入すればいいです.
pkgcloudの対応方法は以下の通りで、主にkeystoneAuthVersionをv 3に設定し、tenantIdとdomainIdを設定する必要がある.
今のところこのsdkはまだ完璧な段階で、多くのものがwikiとdocに体現されていないので、openstackのAPIに対して少しの調査が必要で、しなければならない仕事はまだたくさんあります.
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に対して少しの調査が必要で、しなければならない仕事はまだたくさんあります.