0
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?

PowerVS IBM i 日記(109): メタデータサービスおよび信頼済みプロファイルのサポート

0
Last updated at Posted at 2026-07-29

執筆時点でTOK04でもメタデータサービスの構成は出来ましたが、実際に利用すると「Service unavailable: Unable to connect to the backend service. Please try again later or contact support if the issue persists」と、バックエンドに接続できないというエラーが返ってきました。

サポートに確認したところ、現在、メタデータサービスが実際に稼働しているのは「"in-mum-1", "in-mum-2", "eu-de-1", "eu-de-2", "mon01", "che02", "che03", "mad02", "mad04"」とのことです。

今回の記事では、構成のスクリーンショットはTOK04で取得しましたが、実際の検証はeu-de-1で実施しました。

今回も「(108): ホスト障害時の自動リモート再起動の無効化」に続いて、やはり、リリースノートの「2026年6月24日」分に記載されていた機能拡張からの紹介です。

今回の検証対象はこちらです。

メタデータサービスおよび信頼済みプロファイルのサポート
メタデータサービスを利用すると、インスタンスのメタデータにアクセスしたり、信頼済みプロファイルを使用して、API キーを管理することなく IAM 対応サービスを呼び出したりすることができます。 詳細については、「 Power Virtual Server のメタデータサービスの設定と管理 」を参照してください。

つまり、下記の二つの事が可能です。

  • VSIインスタンスのメタ情報の取得
  • 信頼済みプロファイルを使用して、API キーを管理することなくIAM対応サービスを呼び出す

「VSIインスタンスのメタ情報の取得」では、OSからは見えていないPowerVSインスタンスとしてのメタ情報が取得できます。
今回の方法で取得できるのは、リクエストを送っているVSIインスタンスのメタ情報です。他のVSIインスタンスの情報は取得できません。

「信頼済みプロファイルを使用」は、PowerVS上からトラステッドプロファイルを利用可能にする機能です。
これまで、COSなどのサービスを呼び出す場合、access keysecret keyで認証するHMAC認証や永続的なAPIキーを使ったIAM認証が使われてきました。
しかし、これらは、有効期限が設定できず、漏洩に弱いのが課題でした。
トラステッドプロファイルを利用する場合、APIトークンの有効時間を自由に設定できるため、漏洩対策が強化できます。

今回は「VSIインスタンスの情報の取得」を検証します。

設定

「一般」セクションの「拡張構成」を展開し「Metadata service」を有効にします。
「信頼済みプロファイルを使用」する場合は「Select trusted profile」をクリックすると、デフォルトとして利用するトラステッドプロファイルが、構成済みのものから選択が可能です。
もちろん、デフォルトを指定しないで利用時にトラステッドプロファイルを直接指定することもできます。

image.png

構成

メタデータサービスでは、VSI上のIPアドレス「169.254.169.253」を持つリンクローカルネットワークを使用し、「169.254.169.254」にあるメタデータサービスのエンドポイントに接続します。

新規にデプロイする場合

そのため「Metadata service」を有効にして新規にデプロイすると、そのための回線記述が構成され、「169.254.169.253」というIPアドレスが自動的に設定されます。

image.png

「169.254.169.252/30」のルートが追加されています。「/30」なので、可能な接続先は「169.254.169.254」だけです。

image.png

このIPアドレスは、どのインスタンスでも共通で、ポータル上は表示されません。

{5DADB497-46BD-4259-AE53-6720702D10D6}.png

既存インスタンスを構成する場合

インスタンスがパワーオフであれば、「仮想サーバー・インスタンスの詳細」の編集で、「Metadata service」を有効に変更できます。

image.png

ただし、回線記述とIPアドレス設定は自動的には行われません。手動で構成する必要があります。
手順は「PowerVS IBM i 日記(53): 後からPowerVS IBM i にネットワークを追加しても自動でLINDは作成されないし IP アドレスも追加されない」が参考になると思います。

ただし、前述のようにメタデータサービス用のネットワーク資源は、ポータルに表示されず、MACアドレスも事前には確認できません。
「Metadata service」を有効にする前と後で「WRKHDWRSC *CMN」を実行し、追加されたリソースを確認するのが良いでしょう。

接続確認

「169.254.169.254」への接続を確認します。

PING RMTSYS('169.254.169.254')

image.png

メタデータサービスの呼び出し

環境の準備

今回はpase環境からcurljqを使って確認します。

ACSを使ってcurljqを導入します。

image.png

image.png

今回の環境はパブリックネットワークへの直接のインターフェースを持っていません。
しかし「PowerVSからインターネットへのアウトバウンド通信をマネージドサービスのみで実現する」の構成で、パブリックネットワークへ接続できるように構成しました。

パブリックネットワークへ接続アクセスが無い場合は「SSH トンネリング」の接続でACSを使ったOSSの導入を試してください。

image.png

QP2TERMだとpase環境の使い勝手が不十分なので、IBM i上にsshで接続できる環境を整えて、クライアントからsshで直接接続します。

今回は「PowerVS IBM i 日記(78): PER 環境の利用(6) - VPN for VPC(Client to Site) で PowerVSに 接続する」の構成で、クライアントからVPNでPowerVS上のIBM iに接続しています。

C:\Users\6onoda>ssh ONODA@192.168.170.12

好みですが、bashに切り替えました。
OSSパッケージは「/QOpenSys/pkgs/bin」に導入されますので、PATHに追加しておきます。

$ bash

bash-5.2$ export PATH=/QOpenSys/pkgs/bin:$PATH

bash-5.2$ echo $PATH
/QOpenSys/pkgs/bin:/QOpenSys/usr/bin:/usr/ccs/bin:/QOpenSys/usr/bin/X11:/usr/sbin:.:/usr/bin
export PATH=/QOpenSys/pkgs/bin:$PATH

curljqが利用可能になりました。

bash-5.2$ curl -V
curl 8.12.0 (powerpc-ibm-os400) libcurl/8.12.0 OpenSSL/3.0.19 zlib/1.3.1 brotli/1.0.9 libidn2/2.3.0 libssh2/1.11.1
Release-Date: 2025-02-05
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli HSTS HTTPS-proxy IDN IPv6 Largefile libz NTLM SSL threadsafe TLS-SRP UnixSockets

bash-5.2$ jq -V
jq-1.8.1

メタデータサービスの利用

Power Virtual Servers Metadata Service API

メタデータサービスのAPIのDocsは下記になります。

Endpoint URL

メタデータサービスのAPIのEndpoint URLは下記になります。

一旦、変数に入れましょう

pvs_api_endpoint=https://api.metadata.power-iaas.cloud.ibm.com
bash-5.2$ pvs_api_endpoint=https://api.metadata.power-iaas.cloud.ibm.com

bash-5.2$ echo $pvs_api_endpoint
https://api.metadata.power-iaas.cloud.ibm.com

instance_identity_tokenの取得

メタデータサービスを利用するのにはinstance_identity_tokenが必要です。
instance_identity_tokenを取得し、jqを使って切り出します。
有効期限が指定できます。今回は300秒(5分間)だけ有効なtokenになっています。

identity_token=` \
 curl -X PUT "$pvs_api_endpoint/identity/v1/token" \
  -H 'content-type: application/json' \
  -H "Metadata-Flavor: ibm" \
  -H "Accept: application/json" \
  -d '{"expires_in": 300}' \
  | \
 jq -r '(.access_token)'`
-bash-5.2$ identity_token=` \
 curl -X PUT "$pvs_api_endpoint/identity/v1/token" \
  -H 'content-type: application/json' \
  -H "Metadata-Flavor: ibm" \
  -H "Accept: application/json" \
  -d '{"expires_in": 300}' \
  | \
 jq -r '(.access_token)'`
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2041  100  2022  100    19   3668     34 --:--:-- --:--:-- --:--:--  3704

-bash-5.2$ echo $identity_token
eyJhbGciOiJSUzI1NiIsImtpZCI6IlBWUy1DUl9ldS1kZV83YmQxYTlkY2RmOTRjYjUwIiwidHlwIjoiSldUIn0.eyJ3b3Jrc3BhY2VzIjpbeyJuYW1lIjoib25vZGEtZnJhMDQiLCJjcm4iOiJjcm46djE6Ymx1ZW1peDpwdWJsaWM6cG93ZXItaWFhczpldS1kZS0xOmEvMWNmMzVmODYzNGNiNDE5NGFlZGI3Yzg5NjZhZDU2YjI6NDQ2ZjU5YzctNTI2Ni00YzY1LTllYzYtNGEzYmYw...(略)

VSIインスタンスのメタ情報の取得

取得したinstance_identity_tokenを使って「/metadata/v1/instance」にアクセスするとVSIインスタンスのメタ情報が取得できます。
jqを使って出力を整形します。

curl -X GET "$pvs_api_endpoint/metadata/v1/instance" \
 -H "Metadata-Flavor: ibm" \
 -H "Authorization: Bearer $identity_token" \
| jq .

OSからの情報としては取得できないインスタンスのメタ情報が確認できました。

-bash-5.2$ curl -X GET "$pvs_api_endpoint/metadata/v1/instance" \
 -H "Metadata-Flavor: ibm" \
 -H "Authorization: Bearer $identity_token" \
| jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2737  100  2737    0     0    208      0  0:00:13  0:00:13 --:--:--   711
{
  "cloudResourceName": {
    "account": "0123456789abcdefghijk0123456789l",
    "crn": "crn:v1:bluemix:public:power-iaas:eu-de-1:a/1cf35f8634cb4194aedb7c8966ad56b2:446f59c7-5266-4c65-9ec6-4a3bf0a54ffb:pvm-instance:a9648a73-5084-4088-943d-2ba58d3f8245",
    "location": "eu-de-1",
    "resource": "a9648a73-5084-4088-943d-2ba58d3f8245",
    "resourceType": "pvm-instance",
    "serviceInstance": "446f59c7-5266-4c65-9ec6-4a3bf0a54ffb",
    "workspaceCRN": "crn:v1:bluemix:public:power-iaas:eu-de-1:a/1cf35f8634cb4194aedb7c8966ad56b2:446f59c7-5266-4c65-9ec6-4a3bf0a54ffb::",
    "workspaceName": "onoda-fra04"
  },
  "consoleLanguage": {
    "code": "1399",
    "language": "1399 Japanese (Latin Unicode Extended)"
  },
  "creationDate": "2026-07-28T08:53:20Z",
  "defaultTrustedProfile": {
    "target": {}
  },
  "diskSize": 100,
  "effectiveProcessorCompatibilityMode": "POWER11",
  "fault": {},
  "health": {
    "lastUpdate": "2026-07-28T09:00:21.776427",
    "status": "OK"
  },
  "imageID": "b898b393-3219-4778-848c-29a5e9e9a290",
  "location": {
    "region": "eu-de-1",
    "regionDisplayName": "Frankfurt 04",
    "type": "zone",
    "url": "https://eu-de.power-iaas.cloud.ibm.com"
  },
  "maxmem": 16,
  "maxproc": 1,
  "memory": 2,
  "metadataService": {
    "enabled": true
  },
  "minmem": 2,
  "minproc": 0.25,
  "networks": [
    {
      "crn": "crn:v1:bluemix:public:power-iaas:eu-de-1:a/1cf35f8634cb4194aedb7c8966ad56b2:446f59c7-5266-4c65-9ec6-4a3bf0a54ffb:network:d2680e5e-c110-484c-86ff-cf5f9ab00ab8",
      "href": "/pcloud/v1/cloud-instances/446f59c7-5266-4c65-9ec6-4a3bf0a54ffb/pvm-instances/a9648a73-5084-4088-943d-2ba58d3f8245/networks/d2680e5e-c110-484c-86ff-cf5f9ab00ab8",
      "ipAddress": "192.168.170.12",
      "macAddress": "fa:16:3e:6b:ae:35",
      "networkID": "d2680e5e-c110-484c-86ff-cf5f9ab00ab8",
      "networkInterfaceID": "d2d6f03c-3be5-468f-9b5f-edcc3a1afdc6",
      "networkName": "fra04-sn",
      "type": "fixed",
      "version": 4
    }
  ],
  "operatingSystem": "V7R6M0 450 1",
  "osType": "ibmi",
  "pinPolicy": "none",
  "placementGroup": "none",
  "preferredProcessorCompatibilityMode": "POWER11",
  "procType": "shared",
  "processors": 0.25,
  "pvmInstanceID": "a9648a73-5084-4088-943d-2ba58d3f8245",
  "sapProfile": {},
  "serverName": "fra04-76-84",
  "softwareLicenses": {},
  "srcs": [
    [
      {
        "src": "C6004036",
        "timestamp": "2026-07-28T08:56:32Z"
      },
      {
        "src": "03B00000",
        "timestamp": "2026-07-28T08:56:32Z"
      }
    ]
  ],
  "status": "ACTIVE",
  "storagePool": "General-Flash-75",
  "storagePoolAffinity": true,
  "storageType": "any",
  "sysType": "s1122",
  "updatedDate": "2026-07-28T08:53:20Z",
  "virtualCores": {
    "assigned": 1,
    "max": 1,
    "min": 1
  },
  "virtualSerialNumber": {
    "serial": "VS02VRQ",
    "softwareTier": "P05"
  },
  "volumes": [
    {
      "crn": "crn:v1:bluemix:public:power-iaas:eu-de-1:a/1cf35f8634cb4194aedb7c8966ad56b2:446f59c7-5266-4c65-9ec6-4a3bf0a54ffb:volume:fe61c1db-2d6b-46c2-b2dd-a2601bc42793",
      "diskType": "tier1",
      "name": "fra04-76-84-a9648a73-00048f0b-boot-0",
      "size": 100,
      "volumeID": "fe61c1db-2d6b-46c2-b2dd-a2601bc42793",
      "wwn": "60050768108100F36800000000008ECC"
    }
  ]
}

instance_identity_tokenの有効期間切れ

今回のinstance_identity_token有効期間は300秒(5分)に設定しました。
有効期間が切れたinstance_identity_tokenを利用すると「Authentication failed: The JWT token has expired. Please obtain a new token」が返ってきました。

-bash-5.2$ curl -X GET "$pvs_api_endpoint/metadata/v1/instance"  -H "Metadata-Flavor: ibm"  -H "Authorization: Be
arer $identity_token"
Authentication failed: The JWT token has expired. Please obtain a new token

トラステッドプロファイルを利用したIAM access tokenの取得

今回は検証していませんが、トラステッドプロファイルを使ってIAM access tokenの取得することもできます。
そうすればAPIキーを保持しなくても、そのIAM access tokenを使ってCOSなどのIAM対応サービスにアクセスすることができます。

デフォルトとして指定したトラステッドプロファイルを使ってIAM access tokenを取得する場合、このようなリクエストになります。

curl -X POST "$pvs_api_endpoint/identity/v1/iam_tokens" \
 -H "Metadata-Flavor: ibm" \
 -H "Authorization: Bearer $identity_token" \
 -H "Content-Type: application/json" \
 -d '{   }'

デフォルトとして指定していないトラステッドプロファイルを使う場合は、id、crn、nameのいずれかでパラメーターとしてトラステッドプロファイルを指定します。

-d '{ "trusted_profile": { "id" | "crn" | "name" : "xxx" } }

当日記のIndexはこちらです。


許可の無い転載を禁じます。
この記事は筆者の個人的な責任で無保証で提供しています。
当記事に関してIBMやビジネスパートナーに問い合わせることは、固くお断りします。

0
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
0
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?