バッチデプロイメント
バッチデプロイメント機能では、Equinix Metal™ APIを使用して複数のサーバーを一度にデプロイできます。これは、Terraformのような大規模デプロイメントを処理する独自のメソッドを備えたツールをまだ使用していない場合に便利です。バッチデプロイは、同じメトロ、同じサーバープラン、同じオペレーティングシステムでサーバーをデプロイするためのものです。大量のサーバーをデプロイする場合は、バッチデプロイを実行する前に、目的のメトロで キャパシティレベルを確認する ことをお勧めします。
バッチデプロイメントの作成
バッチ デプロイメントを行うには、/projects/{id}/devices/batch エンドポイントに POST リクエストを送信します。リクエストの本文にバッチ要件を JSON オブジェクト batches として送信します。
curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/devices/batch" \
-d '{
"batches": [
{
"metro": "<metro_code>",
"plan": "<plan_code>",
"operating_system": "<os_slug>",
"quantity": <number_of_servers>
}
]
}'
ボディ・パラメーター
metro(required) - The Metro code representing the Metro where you are deploying servers.plan(required) - The plan code that represents the server type you are deploying.operating_system(required) - The slug representing which operating system to install on to your servers.quantity(required) - An integer specifying how many servers to deploy in the batch.
個々のサーバをプロビジョニングするときに使用できるすべてのオプション フィールド は、バッチ配置を作成するときにも使用できます。完全なリストについては、API リファレンスを参照してください。
バッチのデプロイは非同期処理なので、レスポンスにはバッチ ID、状態、タイムスタンプが含まれます。バッチIDを使うと、プロセスの実行中に状態をチェックすることができます。
{
"batches":[
{
"id":"34876707-a2e5-4949-8825-5b4dfd541db8",
"error_messages":[],
"quantity":2,
"state":"queued",
"created_at":"2020-10-06T18:29:34Z",
"updated_at":"2020-10-06T18:29:34Z",
"devices":[],
"project":{"href":"/metal/v1/projects/<project_id>"}
}
]
}
ホスト名の指定
サーバーに名前を付けたい場合は、リクエストにhostnameまたは"hostnamesを使用してください。
サーバに連続した名前を付けるには、batches オブジェクトで hostname パラメータを使用し、{{index}} で解析可能なホスト名を作成します。例えば "dev.server{{index}}" の場合、{{index}} はサーバーのプロビジョニング中に論理的な順序(1, 2, 3...)で整数に置き換えられます。
'{
"batches": [
{
"metro": "<metro_code>",
"plan": "<plan_code>",
"operating_system": "<os_slug>",
"quantity": <number_of_servers>,
"hostname": "dev.server{{index}}"
}
]
}'
バッチのデプロイが完了すると、サーバーはdev.server1、dev.server2、dev.server3という名前になります。
各サーバに特定の名前を付けるには、batches オブジェクトで hostnames パラメータを使用し、ホスト名の配列を渡します。
'{
"batches": [
{
"metro": "<metro_code>",
"plan": "<server_type>",
"operating_system": "<os_code>",
"quantity": <number_of_servers>,
"hostnames": ["dev.server1","dev.server2","dev.server3"]
}
]
}'
サーバーのホスト名を指定する必要はありません。hostnameまたはhostnamesを指定しない場合、サーバーは自動生成名でプロビジョニングされます。サーバーのホスト名は、プロビジョニング後に変更できます。
バッチ展開ステータスの確認
バッチデプロイのステータスを確認するには、/batches/{id} エンドポイントに GET リクエストを送信します。バッチ ID は、バッチ デプロイメントを作成したときの応答の一部です。
curl -X GET -H 'X-Auth-Token: <API_TOKEN>' "https://api.equinix.com/metal/v1/batches/{id}"
バッチリクエストには4つの状態がある。
| State | Description |
|---|---|
| queued | リクエストが検証され、ロケーションのキャパシティがチェックされている間、バッチデプロイは「queued」として開始されます。in_progress |
completed |サーバーが利用可能になり、リクエストを満たすためにプロビジョニングが開始されると、completed に移動します。failed |サーバーをプロビジョニングできない場合、バッチリクエストは failed としてマークされ、‘error_messages’ フィールドでその理由を確認できます。 |
プロジェクトからすべてのバッチを取得する
プロジェクト内のすべてのバッチデプロイメントを一覧表示するには、/projects/{id}/batches エンドポイントに GET リクエストを送信します。
curl -X GET -H "X-Auth-Token: API-TOKEN" "https://api.equinix.com/metal/v1/projects/{id}/batches"
- 通常、Equinix Metalコンソールを使用してサーバーのプロビジョニングを行う場合、レスポンスには予想よりも多くのバッチが含まれます。これは、Equinix Metalコンソールがサーバー展開ごとに単一のインスタンス(
"quantity": 1)のバッチを作成するためです。/devicesのAPIエンドポイントを使用してサーバーインスタンスを作成した場合、バッチは作成されません。API エンドポイントを通してサーバーインスタンスを作成した場合、それはバッチとはみなされないため、このエンドポイントから返されるリストには表示されません。