このトピックでは、Network Security Virtual Applianceのアップグレードに必要なTrend Micro Cloud One™ APIの呼び出し手順について説明します。利用可能な機能には以下が含まれます:
  • アップグレードまたはロールバックが利用可能かどうかを判断するためにアプライアンスのステータスを照会しています
  • アップグレードまたはロールバック操作のトリガー
  • アップグレードとロールバックの進行状況とステータスを確認
次の例では、Trend Micro Cloud One APIキーがSECRETという名前の変数に保存されていると仮定し、Trend Micro Cloud OneリージョンがREGIONという名前の変数に保存されていると仮定します。例えば、<YOUR_API_KEY>をAPIキーのシークレットに置き換え、<YOUR_CLOUD_ONE_REGION>をアカウントのリージョンIDに置き換えます。Trend Micro Cloud Oneのアカウントとリージョンに関する情報については、アカウントヘルプを参照してください。
SECRET= "<YOUR_API_KEY>"
REGION= "<YOUR_CLOUDONE_REGION, e.g. us-1>"
以下の例はbash用に書かれており、出力を再フォーマットするためにjqを使用し、リクエストを実行するためにcurlを使用します。これらのAPIの詳細については、APIリファレンスをご覧ください。

アプライアンスIDを特定

以下のすべてのAPI呼び出しは、IDによって識別される単一のApplianceインスタンスで動作します。curlに次の内容を入力して、管理対象の仮想AppliancesのIDを確認するために、管理対象のすべてのAppliancesのリストを取得します。
jqコマンドは、CloudOne IDとinstanceIDの間のマッピングを抽出します。
URL="https://network.${REGION}.cloudone.trendmicro.com/api/appliances"
curl --location --request GET "${URL}" \
--header "Authorization: ApiKey ${SECRET}" \
--header "api-version: v1" \
| jq '.appliances[] | {ID: .ID, instanceId: .instanceId}'

レスポンスの例

{
 "ID": 2,
 "instanceId": "i-053cced65fea28c18"
}
{
 "ID": 8,
 "instanceId": "i-0e7b568dd0f88d0c1"
}

ステータスの照会

アップグレードが利用可能かどうかを照会するには、「applianceId」で適切なVirtual Applianceを指定して「migrationversions」APIを呼び出す必要があります。
URL="https://network.${REGION}.cloudone.trendmicro.com/api/migrationversions"
curl --location --request GET "${URL}?applianceId=8" \
--header "Authorization: ApiKey ${SECRET}" \
--header "api-version: v1" \
| jq

レスポンスの例

以下の応答は、アップグレードが利用可能であることを示しています。
{
 "baseVersion": "2021.3.0.10968",
 "state": "outOfDate",
 "permission": "write",
 "upgrade": "2021.4.1.10996",
 "rollback": null
 }
この応答は、アプライアンスがすでに最新のバージョンであるため、アップグレードが利用できないことを示しています。ただし、アプライアンスは以前のアップグレード可能なバージョンにロールバックすることができます。
{
"baseVersion": "2021.4.1.10996",
"state": "upToDate",
"permission": "write",
"upgrade": null,
"rollback": "2021.3.0.10968"
}

アップグレードをトリガー

ステータス クエリがアップグレード可能であることを示している場合は、リクエストで「upgrade」アクションを使用して「appliancemigrations」APIを呼び出すことでアップグレードを開始できます。アップグレードするアプライアンスを識別するために適切な「applianceId」値を指定してください。
URL="https://network.${REGION}.cloudone.trendmicro.com/api/appliancemigrations"
curl --data '{"action": "upgrade", "applianceId": 8}' \
--location --request POST "${URL}" \
--header "Authorization: ApiKey ${SECRET}" \
--header "api-version: v1" \
--header "Content-Type: application/json"
リクエストが成功した場合、出力は返されません。アップグレードはバックグラウンドで進行し、ステータスクエリAPIを呼び出して進行状況を追跡できます。

ロールバックをトリガー

ステータス クエリは、ソフトウェア バージョンがアップグレードされた場合にロールバック バージョンが利用可能であることを示します。リクエストで「rollback」アクションを使用して「appliancemigrations」APIを呼び出し、以前のソフトウェア バージョンにロールバックします。
URL="https://network.${REGION}.cloudone.trendmicro.com/api/appliancemigrations"
curl --data '{"action": "rollback", "applianceId": 8}' \
--location --request POST "${URL}" \
--header "Authorization: ApiKey ${SECRET}" \
--header "api-version: v1" \
--header "Content-Type: application/json"
アップグレードが成功した場合、出力は返されません。アップグレードはバックグラウンドで進行し、ステータスアップグレードAPIを呼び出すことで進行状況を追跡できます。

アップグレードとロールバックの進行状況を確認

"appliancemigrations" APIにGETリクエストを送信して、アップグレードおよびロールバックリクエストの進行状況と結果を確認します。このAPIは複数のインスタンスのステータス情報を一度に提供します。
URL="https://network.${REGION}.cloudone.trendmicro.com/api/appliancemigrations"
curl --location --request GET "${URL}?applianceIds=8" \
--header "Authorization: ApiKey ${SECRET}" \
--header "api-version: v1" \
| jq

サンプル応答

{
"statuses": [
  {
   "applianceId": 8,
   "action": "upgrade",
   "currentStep": 3,
   "totalSteps": 0,
   "state": "handling package",
   "result": "",
   "message": "verifying package",
   "time": 0
  }
 ]
}
{
"statuses": [
  {
   "applianceId": 8,
   "action": "upgrade",
   "currentStep": 4,
   "totalSteps": 0,
   "state": "upgrading",
   "result": "",
   "message": "installing package",
   "time": 0
  }
 ]
}
{
"statuses": [
  {
   "applianceId": 8,
   "action": "upgrade",
   "currentStep": 4,
   "totalSteps": 0,
   "state": "upgrading",
   "result": "",
   "message": "installing package",
   "time": 0
  }
 ]
}
{
"statuses": [
  {
   "applianceId": 8,
   "action": "upgrade",
   "currentStep": 6,
   "totalSteps": 6,
   "state": "finish",
   "result": "success",
   "message": "installation complete",
   "time": 1619182490160
  }
 ]
}
{
"statuses": [
  {
   "applianceId": 8,
   "action": "rollback",
   "currentStep": 3,
   "totalSteps": 4,
   "state": "rollback",
   "result": "",
   "message": "rollback software",
   "time": 1619182744545
  }
 ]
}
{
"statuses": [
  {
   "applianceId": 8,
   "action": "rollback",
   "currentStep": 4,
   "totalSteps": 0,
   "state": "finish",
   "result": "success",
   "message": "rollback complete",
   "time": 0
  }
 ]
}