Una API (de l'anglès Application Programming Interface, i en català, Interfície de Programació d'Aplicacions), és un programa que permet a diferents aplicacions comunicar-se entre si per a compartir informació i funcionalitats.
En aquest sentit, la nostra API et permet poder gestionar tot el que pots fer en el panell de Clouding. Des de crear servidors des de diferents orígens, fins a arxivar/desarxivar, crear snapshots, activar còpies de seguretat, afegir regles de firewall, etc.
Per a crear el servidor en aquest tutorial utilitzarem el comando CURL. Per defecte, CURL està instal·lat en la majoria de Linux i Mac. Si estàs utilitzant Windows pots seguir el nostre tutorial sobre com instal·lar CURL en Windows.
Consulta la documentació oficial de l'API de Clouding
Recomanem que per a seguir aquest article i per a obtenir més informació consultis la documentació oficial de l'API de Clouding per a més detalls.
Abans de començar
Per a poder realitzar aquest tutorial necessitaràs accés a una API-KEY. Per a obtenir una API-KEY hauràs de posar-te en contacte amb el nostre equip de suport. En aquests moments la API es troba en una fase de beta privada és per aquest motiu que si voleu provar-la hauràs de contactar amb nosaltres.
Crear servidor utilitzant CURL
Per a crear un servidor utilitzant CURL és necessari executar el següent comando amb tota aquesta estructura:
NOTA: Les comandes utilitzats són amb els paràmetres requerits, per a ampliar més informació pots revisar la documentació 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"
Per a poder executar aquesta comanda correctament necessitaràs obtenir els següents paràmetres:
- name: és el nombre del servidor
- hostname: és el hostname del servidor.
- flavorId: correspon als vcores i GB en RAM. Per exemple, 2x4 correspon a 2vcores i 4GB de RAM. Pots visualitzar totes les opcions utilitzant l'endpoint flavors.
Pots visualitzar totes les opcions amb el següent 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: Per crear un servidor has d'assignar un firewall, per això hauràs d'afegir l' id del firewall que vulguis adjuntar al teu servidor.
Per a llistar tots els firewalls del teu compte:
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: dins d'aquest apartat has de configurar diferents paràmetres, entre ells el password.
Important
Si el servidor conté QEMU-AGENT, podràs seleccionar una contrasenya, pel contrari la contrasenya haurà d'estar buida o bé el valor null.
Després tens savePassword si vols guardar la contrasenya en el panell i el sshkeyId que correspon a la clau SSH.
Per a llistar totes les claus 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: aquesta és la configuració del disc del servidor. Hauràs de seleccionar el source que pot ser "image", "backup", "snapshot" o "server". En aquest cas seleccionaràs l'opció de la imatge. Després hauràs d'afegir l'Id del volum, en aquest cas per a llistar totes les imatges disponibles:
Finalment escolliràs el paràmetre ssdGb que correspon la mida del disc 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"
Comprovar estat del procés
Quan executes la petició de crear un servidor nou a l'API de Clouding, la resposta de l'API és la següent:
{
"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 et fixes en l'última propietat anomenada action, tens informació sobre la petició que és interessant::
- id: L'indentificador únic de l'acció.
- status: estat actual de l'acció. Els valors possibles són: pendent, enProgres, completada, error.
- type: tipus d'acció que se està realitzant, com crear una instantània del servidor. En aquest cas crear un servidor.
- StartedAt: data i hora en què es va iniciar l'acció, en temps UTC.
- completedAt: data i hora en què es va completar l'acció, en hora UTC. Aquest camp serà nul si l'acció encara està en curs (com en aquest exemple).
- resourceId: identificador únic del recurs en què s'està realitzant l'acció, com un servidor.
- resourceType: tipus de recurs sobre el qual es realitza l'acció, com un servidor o una instantània.
Com pots veure en l'exemple de dalt, aquesta acció està en progrés però no finalitzada. Pots revisar aquestes accions en un endpoint especifico perquè et mostri l'estat o per a saber si ha finalitzat correctament.
Per exemple, per a revisar l'acció amb l'ID de l'exemple:
curl -X GET -H "Content-Type: application/json" -H "X-API-KEY: $CLOUDING_APIKEY" "https://api.clouding.io/v1/actions/gNMqlnNpQ0xd7pyk"
Et mostrarà el següent resultat:
{
"id": "gNMqlnNpQ0xd7pyk", "status": "completed",
"type": "create", "startedAt": "2023-02-20T15:34:44Z",
"completedAt": "2023-02-20T15:35:47Z",
"resourceId": "q1ZJVKX8bW0KkY6p", "resourceType": "server"
}
En aquest cas, podràs observar que l'estat ara mateix es troba com completat i que té una data de finalització.
Esperem haver-te ajudat. Ho has provat? Deixa'ns els teus comentaris! 🙂
Recorda, si et queden dubtes sobre aquest article o una altra qüestió relacionada amb els teus servidors a Clouding, escriu-nos a suport@clouding.io Estem a la teva disposició per al que necessitis!