Déploiements par lots
La fonctionnalité de déploiement par lots permet de déployer plusieurs serveurs simultanément à l'aide de l'API Equinix Metal™. Cette fonctionnalité est particulièrement utile si vous n'utilisez pas déjà un outil comme Terraform, qui intègre sa propre méthode de gestion des déploiements de grande envergure. Les déploiements par lots sont conçus pour déployer des serveurs au sein du même réseau métropolitain, avec le même plan de serveurs et le même système d'exploitation. Si vous déployez un grand nombre de serveurs, nous vous recommandons de vérifier les niveaux de capacité du réseau métropolitain souhaité avant de lancer un déploiement par lots.
Effectuer un déploiement par lots
Pour effectuer un déploiement par lots, envoyez une requête POST au point de terminaison /projects/{id}/devices/batch. Transmettez vos exigences de traitement par lots sous forme d'objet JSON batches dans le corps de la requête.
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>
}
]
}'
Paramètres du corps:
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.
Tous les champs optionnels disponibles lors de l'approvisionnement de serveurs individuels le sont également lors de la création d'un déploiement par lots. Consultez la Référence de l'API pour obtenir la liste complète.
Le déploiement par lots est un processus asynchrone ; la réponse inclut donc l’identifiant du lot, son état et l’horodatage. Vous pouvez utiliser l’identifiant du lot pour vérifier l’état pendant l’exécution du processus.
{
"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>"}
}
]
}
Spécification des noms d'hôtes
Si vous voulez nommer vos serveurs, utilisez hostname ou "hostnames dans votre requête.
Pour nommer vos serveurs de manière séquentielle, utilisez le paramètre hostname dans votre objet batches et créez un nom d'hôte analysable avec {{index}}. Par exemple, "dev.server{{index}}" où {{index}} sera remplacé par un entier dans un ordre logique (1, 2, 3,...) lors de la mise en service du serveur.
'{
"batches": [
{
"metro": "<metro_code>",
"plan": "<plan_code>",
"operating_system": "<os_slug>",
"quantity": <number_of_servers>,
"hostname": "dev.server{{index}}"
}
]
}'
Une fois le déploiement du lot terminé, les serveurs sont nommés dev.server1, dev.server2 et dev.server3.
Pour nommer chaque serveur avec un nom spécifique, utilisez le paramètre hostnames dans votre objet batches et transmettez-lui un tableau de noms d'hôtes.
'{
"batches": [
{
"metro": "<metro_code>",
"plan": "<server_type>",
"operating_system": "<os_code>",
"quantity": <number_of_servers>,
"hostnames": ["dev.server1","dev.server2","dev.server3"]
}
]
}'
Il n'est pas nécessaire de spécifier les noms d'hôte de vos serveurs. Si vous ne fournissez ni hostname ni hostnames, les serveurs seront configurés avec des noms générés automatiquement. Vous pourrez modifier les noms d'hôte des serveurs après leur configuration.
Vérification de l'état du déploiement par lots
Pour voir l'état de vos déploiements par lots, envoyez une requête GET au point de terminaison /batches/{id}. L'identifiant du lot fait partie de la réponse lors de la création d'un déploiement par lots.
curl -X GET -H 'X-Auth-Token: <API_TOKEN>' "https://api.equinix.com/metal/v1/batches/{id}"
Il existe quatre états pour les demandes par lots.
| State | Description |
|---|---|
| En file d'attente | Un déploiement par lots démarre en tant que « en file d'attente » pendant que votre demande est validée et que la capacité de l'emplacement est vérifiée. |
| en_cours | Une fois votre requête validée, elle passera à in_progress. |
| terminé | Lorsque les serveurs seront disponibles et qu'ils commenceront à provisionner pour répondre à votre demande, celle-ci passera à completed. |
| Échec | Si les serveurs ne peuvent pas être provisionnés, la requête par lots sera marquée comme failed et vous pourrez voir pourquoi dans le champ ‘error_messages’. |
Récupération de tous les lots d'un projet
Pour lister tous vos déploiements par lots dans un projet, envoyez une requête GET au point de terminaison /projects/{id}/batches.
curl -X GET -H "X-Auth-Token: API-TOKEN" "https://api.equinix.com/metal/v1/projects/{id}/batches"
- Si vous utilisez habituellement la console Equinix Metal pour provisionner des serveurs, la réponse contiendra plus de lots que prévu. C'est parce que la console Equinix Metal crée un lot d'une seule instance (
"quantity": 1) pour chaque déploiement de serveur. Si vous créez des instances de serveur via le point de terminaison API/devices, cela n'est pas considéré comme un lot et n'apparaîtra donc pas dans la liste renvoyée par ce point de terminaison.