Una API (del inglés Application Programming Interface, y en castellano, Interfaz de Programación de Aplicaciones), es un programa que permite a diferentes aplicaciones comunicarse entre si para compartir información y funcionalidades.
En este sentido, nuestra API te permite poder gestionar todo lo que puedes hacer en el panel de Clouding. Desde crear servidores desde diferentes orígenes, hasta archivar/desarchivar, crear snapshot, activar backups, añadir reglas de firewall, etc.
Para crear el servidor en este tutorial utilizaremos el comando CURL. Por defecto, CURL está instalado en la mayoría de Linux y Mac. Si estás utilizando Windows puedes seguir nuestro tutorial sobre cómo instalar CURL en Windows.
Consulta la documentación oficial de la API de Clouding
Recomendamos que para seguir este artículo y para obtener más información consultes la documentación oficial de la API de Clouding para más detalles.
Antes de empezar
Para poder realizar este tutorial necesitarás acceso a una API-KEY. Para obtener una API-KEY deberás ponerte en contacto con nuestro equipo de soporte. En estos momentos la API se encuentra en una fase de beta privada es por ese motivo que si queréis probarla deberás contactar con nosotros.
Crear servidor utilizando CURL
Para crear un servidor utilizando CURL es necesario ejecutar el siguiente comando con toda esta estructura:
NOTA: Los comandos utilizados son con los parámetros requeridos, para ampliar más información puedes revisar la documentación oficial de la API de Clouding.
curl -X POST \
-H "Content-Type: application/json" \
-H "X-API-KEY: $CLOUDING_APIKEY" \
-d '{"name":"Nombre Servidor","hostname":"server.hostname.com","flavorId":"2x4","firewallId":"$FIREWALLID","accessConfiguration":{"password":"contraseña","savePassword":true,"sshKeyId":"$SSHKEYID"},"volume":{"source":"Image","id":"$VOLUMEID","ssdGb":10}}' \
"https://api.clouding.io/v1/servers"
Para poder ejecutar este comando correctamente necesitarás obtener los siguientes parámetros:
- name: es el nombre del servidor
- hostname: es el hostname del servidor.
- flavorId: corresponde a los vcores y gigas en RAM. Por ejemplo, 2x4 corresponde a 2vcores y 4GB de RAM. Puedes visualizar todas las opciones utilizando el endpoint flavors.
Puedes visualizar todas las opciones con el siguiente comando en CURL:
curl -X GET -H "Content-Type: application/json" -H "X-API-KEY: $CLOUDING_APIKEY" "https://api.clouding.io/v1/sizes/flavors?page=1&pageSize=20"
- firewallid: Para crear un servidor tienes que asignar un firewall, por lo que tendrás que añadir el id del firewall que quieres adjuntar a nuestro servidor.
Para listar todos los firewalls de nuestra cuenta:
curl -X GET -H "Content-Type: application/json" -H "X-API-KEY: $CLOUDING_APIKEY" "https://api.clouding.io/v1/firewalls?page=1&pageSize=20"
- accessConfiguration: Dentro de este apartado debes configurar diferentes parámetros, entre ellos el password.
Importante
Si el servidor contiene QEMU-AGENT, podrás seleccionar una contraseña, por lo contrario la contraseña deberá de estar vacía o bien el valor null.
Luego tendrás savePassword si quieres guardar la contraseña en el panel y el sshkeyId que corresponde a la llave SSH.
Para listar todas las llaves SSH:curl -X GET -H "Content-Type: application/json" -H "X-API-KEY: $CLOUDING_APIKEY" "https://api.clouding.io/v1/keypairs?page=1&pageSize=20"
- volume: Esta es la configuración del disco del servidor. Deberás de seleccionar el source que puede ser "image", "backup", "snapshot" o "server". En este caso seleccionarás la opción de la imagen. Luego tendrás que añadir el Id del volumen, en este caso para listar todas las imágenes disponibles:
Finalmente escogerás el parámetro ssdGb que corresponde al tamaño del disco en GB.curl -X GET -H "Content-Type: application/json" -H "X-API-KEY: $CLOUDING_APIKEY" "https://api.clouding.io/v1/images?page=1&pageSize=20"
Comprobar estado del proceso
Cuando ejecutas la petición de crear un servidor nuevo a la API de Clouding, la respuesta de la API es la siguiente:
{
"id": "q1ZJVKX8bW0KkY6p",
"name": "Nombre del Servidor",
"hostname": "server.hostname.com",
"vCores": 1,
"ramGb": 2,
"flavor": "1x2",
"volumeSizeGb": 10,
"image": {
"id": "BJebl0d7zA2WGwQ1",
"name": "Debian 11 (64 Bit)"
},
"status": "Pending",
"pendingFeatures": [],
"pendingFirewalls": [
"p06Wq42PvbKeDVEb"
],
"requestedAccessConfiguration": {
"sshKeyId": "X19wGdRz0xdPlJbg",
"hasPassword": false,
"savePassword": false
},
"backupPreferences": null,
"action": {
"id": "gNMqlnNpQ0xd7pyk",
"status": "inProgress",
"type": "create",
"startedAt": "2023-02-20T15:34:44.9351504Z",
"completedAt": null,
"resourceId": "q1ZJVKX8bW0KkY6p",
"resourceType": "server"
}
}
Si te fijas en la última propiedad llamada action, tienes información sobre la petición que es interesante:
- id: El indentificador único de la acción.
- status: Estado actual de la acción. Los valores posibles son: pendiente, enProgreso, completada, error.
- type: El tipo de acción que se está realizando, como crear una instantánea del servidor. En este caso crear un servidor.
- StartedAt: La fecha y hora en que se inició la acción, en tiempo UTC.
- completedAt: La fecha y hora en que se completó la acción, en hora UTC. Este campo será nulo si la acción aún está en curso (como es en este ejemplo).
- resourceId: El identificador único del recurso en el que se está realizando la acción, como un servidor.
- resourceType: El tipo de recurso sobre el que se realiza la acción, como un servidor o una instantánea.
Como puedes ver en el ejemplo de arriba, esta acción está en progreso pero no finalizada. Puedes revisar estas acciones en un endpoint especifico para que te muestre el estado o para saber si ha finalizado correctamente.
Por ejemplo, para revisar la acción con el ID del ejemplo:
curl -X GET -H "Content-Type: application/json" -H "X-API-KEY: $CLOUDING_APIKEY" "https://api.clouding.io/v1/actions/gNMqlnNpQ0xd7pyk"
Te mostrará el siguiente resultado:
{
"id": "gNMqlnNpQ0xd7pyk", "status": "completed",
"type": "create", "startedAt": "2023-02-20T15:34:44Z",
"completedAt": "2023-02-20T15:35:47Z",
"resourceId": "q1ZJVKX8bW0KkY6p", "resourceType": "server"
}
En este caso, podrás observar que el estado ahora mismo se encuentra como completado y que tiene una fecha de finalización.
Esperamos haberte ayudado. ¿Lo has probado? ¡Déjanos tus comentarios! 🙂
Recuerda, si te quedan dudas sobre este artículo u otra cuestión relacionada con tus servidores en Clouding, escríbenos a soporte@clouding.io ¡Estamos a tu disposición para lo que necesites!