2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

プライベート・エンドポイントでPowerVS APIをcurlで実行する際の環境変数設定

Last updated at Posted at 2023-02-02

はじめに

PowerVS の API を プライベート・ エンドポイントで curl コマンドで実行するための環境変数設定ログです。

参考:IBM Cloud Docs Power Cloud API

当記事記載時点(2023年2月) ibmcloud コマンドの power-iaas プラグインはプライベート・エンドポイントをサポートしていないそうです。
そのためプライベート・エンドポイントで操作したい場合は、APIを直接実行となるようです。

# ibmcloud pi service-target crn:v1:bluemix:public:power-iaas:osa21:a/52xxxxxde69144428266:97xxxxa7-xxxx-xxxx-xxxx-f87xxxxd::
失敗
プラグイン 'power-iaas 0.4.6' はプライベート・エンドポイントをサポートしていません。 'ibmcloud api' を実行してパブリック API エンドポイントを設定してやり直してください。

対象読者

PowerVS の API を プライベート・エンドポイントで実施したい方


環境

PowerVS API のプライベート・エンドポイント実行は、
IBM Cloud Kubernetes Service (Classic) の Linux コンテナから実施しました。


環境変数の設定

以下の環境変数を設定します。

APIKEY
TOK_CRN (Tokyo Region のClond Resource Name(CRN))
TOK_CLOUD_INSTANCE_ID (Tokyo Region の PowerVS Cloud Instance ID)
ACCESS_TOKEN


APIキーの設定

APIキーの作成は以下を参照

IBM Cloud Docs: ユーザーのAPIキーの管理

IBM Cloud コンソールで**「管理」** > 「アクセス (IAM)」 > **「API キー」**に移動します。
    **「IBM Cloud API キーの作成」をクリックします。
   API キーの名前と説明を入力します。
    「作成」 をクリックします。
       次に、
「表示」をクリックして API キーを表示します。または、「コピー」をクリックして後で使用するためにコピーして保存するか、または「ダウンロード」**をクリックします。

作成したAPIキーを変数に設定します。

# export APIKEY=< API Key> 

Cloud Resource Name(CRN) の設定

CRNの取得は以下を参照

クラウド・リソース名

CRNは ibmcloud pi service-list コマンドで確認可能です。

一例

$ ibmcloud pi service-list
ID                                                                                                                名前
crn:v1:bluemix:public:power-iaas:us-south:a/xxxxxb0f3a4109xxxxx144428266:ef5xxxxx-0xxc-4287-xxxx-45b96870xxxx::   psvs-dal
crn:v1:bluemix:public:power-iaas:osa21:a/xxxxxcb0f3a41xxxxx69144xxxxxx66:976c66a7-xxxx-4432-xxxx-f876cce6db0d::   psvs-osa21
crn:v1:bluemix:public:power-iaas:tok04:a/xxxxxf3a4109ac0xxxxx4428266xxxx:xxxxxdx0-26e5-xxxx-xxdf-728xxxxbxxxx::   psvs-tok04

また対象のワークスペースの表示からも確認できます。

確認した値を変数として設定します。

# export TOK_CRN="xxxxxf3a4109ac0xxxxx4428266xxxx:xxxxxdx0-26e5-xxxx-xxdf-728xxxxbxxxx::"

CLOUD INSTANCE ID の取得

CLOUD INSTANCE IDは CRN の後方部分から取得が可能です。

export TOK_CLOUD_INSTANCE_ID=`echo $TOK_CRN | awk -F '[:]' '{print $8}'`

ACCESS TOKENの取得

ACCESS TOKEN は iam.cloud.ibm.com/identity/token のAPIを実行します。

以下の実行で直接変数"ACCESS_TOKEN"に入力します。

$ export ACCESS_TOKEN=$(curl -X POST "https://private.iam.cloud.ibm.com/identity/token" -H "content-type: application/x-www-form-urlencoded" -H "accept: application/json" -d "grant_type=urn%3Aibm%3Aparams%3Aoauth%3Agrant-type%3Aapikey&apikey=${APIKEY}" --insecure | jq -r '.access_token')

ACCESS_TOKEN 取得確認

# echo $ACCESS_TOKEN
xxxxxxxxxxxxxxxiOiJSUzI1NiJ9.eyJpYW1faWQiOxxxxxxxxxxxxxxxyNzAwMDFNUktTIiwicmVhbG1pZCI6IklCTWlkIiwianRpIjoiMmE2MWU4NDMtNjljZS00NzgzLThjNWItNjM5ZDZiZjM0ZjMyIiwiaxxxxxxxxxxxxxxxMU1SS1MiLCJnaXZlbl9uYW1lIjoiQ2hpeW9rbyxxxxxaGl5b2tvIFVzaGlvZ2kiLCJlbWFpbCI6IkFIQTAzNjQwQGpwLmlibS5jb20iLCJzdWIiOiJBSEEwMzY0MEBqcC5pYm0uY29tIiwiYXV0aG4iOnsic3ViIjoiQUhBMDxxxxxTWlkLTI3MDAwMU1xxxxxxxxxxxxxxx2hpb2dpIiwiZ2l2ZW5fbmFtZSI6IkNoaXlva28iLCJmYW1pbHlfbmFtZSI6IlVzaGlvZ2kiLCJlbWFpbCI6IkFIQTAzNjQwQGpwLmlibS5jb20ifSwiYWNjb3VudCI6eyJib3VuZGFyeSI6Imdsb2JhbCIsInZhbGlkIjp0cnVlLCJic3xxxxxiIxxxxxxxxxxxxxxxSIsImZyb3plbiI6dHJ1ZSwiaW1zIjoiMTM3ODk0MyJ9LCJtZmEiOnsiaW1zIjxxxxxxxxxxxxxxxmlibS5jb20vaWRlbnRpdHkiLCJncmFudF90eXBlIjoidXJuOmlibTpwYXJhbXM6b2F1dGg6Z3JhbnQtdHlwZTphcGlrZXkiLCJzY29wZSI6ImlibSxxxxx19.vO70LKQ3-NH4tR1esXKt0i59H5UkVKlKbSUAwqaDf2E6oxIyLxxxxxxxxxxxxxxxxxxEiJ1SIk-NSC3IEs2LpGFJurwa9vebknzCgS1jfHnPBDrFrWuSY-Ohv9MYyXfwUW2k4QCz1GJxYziEtr4VayP-xxxxxxxxxxxxxxxOzqmM0QFwaJlqbepjjYgCPUfD-XqbpeGOfg3A5D2tODJQf1WUlFp519TwqNq872F_1uWC2I5_qUlTh9Fb485s7uFpWdkTNSox5xxxxxxxxxxxxxxx

これで PowerVS API プライベート・エンドポイントで curl での操作が可能となりました。


(参考実行) ボリュームの情報取得

PowerVS API 実行のボリュームの情報取得の例です。
プライベート・エンドポイントで、"private.jp-tok.power-iaas.cloud.ibm.com" を指定しています。

PowerVS API : List all volumes attached to a PVM Instance

# curl -sSfX GET https://private.jp-tok.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/${TOK_CLOUD_INSTANCE_ID}/volumes -H "Authorization: Bearer ${ACCESS_TOKEN}" -H "CRN: ${TOK_CRN}" -H 'Content-Type: application/json' | jq -r
{
  "volumes": [
    {
      "bootVolume": false,
      "bootable": false,
      "creationDate": "2022-03-07T07:57:53.000Z",
      "diskType": "tier3",
      "href": "/pcloud/v1/cloud-instances/xxxxxx080031f60c3e6fac3/volumes/e6exxx5-413c-495e-91dc-5bxxxxxx6",
      "lastUpdateDate": "2022-03-09T01:50:00.000Z",
      "name": "bkdisk",
      "pvmInstanceIDs": [],
      "shareable": false,
      "size": 80,
      "state": "available",
      "volumeID": "e6xxxxx45-413c-4xxx-91dc-5bb0xxxxxxx",
      "volumePool": "Tier3-Flash-2",
      "volumeType": "Tier3-Flash-2",
      "wwn": "600507xxxxxxx0000001958"
    },
    {
      "bootVolume": false,
      "bootable": false,
      "creationDate": "2022-02-02T08:45:37.000Z",
      "diskType": "tier3",
      "href": "/pcloud/v1/cloud-instances/0b02xxxxxxx1f60c3e6fac3/volumes/2sssss-7bc8-452d-a081-0xxxxxxc0",
      "lastUpdateDate": "2022-02-02T11:19:34.000Z",
      "name": "vol10",
      "pvmInstanceIDs": [],
      "shareable": false,
      "size": 80,
      "state": "available",
      "volumeID": "xxxxxef2-7bc8-xxxx-a081-0ebfxxxxxx0",
      "volumePool": "Tier3-Flash-2",
      "volumeType": "Tier3-Flash-2",
      "wwn": "6005xxxxxxx18000000000014BE"
    },

~ 省略 ~ 


ここからさらに jq コマンドや awk コマンドを使って取得したい情報だけ抜き出します。

以下は ボリューム名 "bkdisk" の Volume ID を抜き出す例

# curl -sSfX GET https://private.jp-tok.power-iaas.cloud.ibm.com/pcloud/v1/cloud-instances/${TOK_CLOUD_INSTANCE_ID}/volumes -H "Authorization: Bearer ${ACCESS_TOKEN}" -H "CRN: ${TOK_CRN}" -H 'Content-Type: application/json' | jq -r '.volumes[] | [.volumeID,.name] | @tsv' | grep -w bkdisk | awk '{print $1}'
e6xxxxx45-413c-4xxx-91dc-5bb0xxxxxxx

以上です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?