APIを使用したVirtual Applianceのアップグレード
ここでは、 Network Security 仮想アプライアンスのアップグレードに必要な 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で識別される単一のアプライアンスインスタンスで動作します。curlに次のように入力して、すべての管理対象アプライアンスのリストを取得し、管理対象の仮想アプライアンスのIDを確認します。
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」を指定した「migrationversions」APIの呼び出しでアプライアンスIDを指定する必要があります。
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
}
]
}