Vai al contenuto

Server

I server virtuali sono il nucleo dei servizi ECS. Questa pagina elenca tutte le operazioni disponibili sui server.

Creare un nuovo server

Sono necessarie pochissime informazioni per creare un server di base, hai solo bisogno di:

Richiesta HTTP

POST /ecs/v2/servers
{
  "plan": "ECS6",
  "image": "debian-12",
  "location": "it-fr2",
  "notes": "my-first-server"
}

Risposta HTTP

{
  "status": "ok",
  "action": 35,
  "server": {
    "name": "ec200001",
    "ipv4": "",
    "ipv6": "",
    "plan": "ECS6",
    "location": "it-fr2",
    "os": "debian-12",
    "status": "Booting",
    "progress": 10
    ...
  }
}

Puoi monitorare lo stato dell'Azione di creazione per sapere quando un server è pronto o se l'operazione sia fallita.

Attenzione

La creazione del server può facilmente fallire per mancanza di risorse, per evitare questo comportamento si raccomanda di verificare la disponibilità del Piano prima di tentare di creare un server in un determinato data center.

Elenca tutti i server

Per elencare tutti i tuoi server puoi facilmente utilizzare il seguente endpoint:

Richiesta HTTP

GET /ecs/v2/servers

Risposta HTTP

{
    "status": "ok",
    "count":5,
    "server":[
        {
            "name": "ec200001",
            "ipv4": "127.0.0.1",
            "ipv6": "fe80::1",
            "group": "eg100001",
            "plan": "ECS6",
            "plan_size": {
                "core": 12,
                "ram": 24576,
                "disk": 400,
                "gpu": 0,
                "gpu_label": "",
                "host_type": "ECS"
            },
            "reserved_plans": [],
            "is_reserved": false,
            "reserved_until": "",
            "support": null,
            "location": "it-fr2",
            "location_label": "frosinone",
            "notes": "my-server",
            "so": "debian-12",
            "so_label": "Debian 12",
            "creation_date": "2024-10-10 12:00...",
            "deletion_date": null,
            "active_flag": true,
            "status": "Booted",
            "progress": 100,
            "api_version": "v4",
            "user": "eCS99999",
        },
        ...
    ]
}

Ottenere un server specifico

Per ottenere solo un server specifico, puoi aggiungere il nome del server all'URL come segue:

Richiesta HTTP

GET /ecs/v2/servers/{servername}

Risposta HTTP

{
    "status": "ok",
    "server": {
        "name": "ec200001",
        "ipv4": "127.0.0.1",
        "ipv6": "fe80::1",
        "group": "eg100001",
        "plan": "ECS6",
        "plan_size": {
            "core": 12,
            "ram": 24576,
            "disk": 400,
            "gpu": 0,
            "gpu_label": "",
            "host_type": "ECS"
        },
        "reserved_plans": [],
        "is_reserved": false,
        "reserved_until": "",
        "support": null,
        "location": "it-fr2",
        "location_label": "frosinone",
        "notes": "my-server",
        "so": "debian-12",
        "so_label": "Debian 12",
        "creation_date": "2024-10-10 12:00...",
        "deletion_date": null,
        "active_flag": true,
        "status": "Booted",
        "progress": 100,
        "api_version": "v4",
        "user": "eCS99999",
    }
}

Cambiare etichetta del server

Se vuoi cambiare un'etichetta per un server specifico, puoi usare la seguente richiesta:

Richiesta HTTP

PUT /ecs/v2/servers/{servername}
{
  "note": "my-new-server-label"
}

Risposta HTTP

{
  "status": "ok"
}

Periodo riservato

Sottoscrivere un periodo riservato è una buona scelta se affronti sfide che richiedono alta intensità lavorativa per periodi medio-lunghi.

Facendo così, puoi ricevere significativi sconti basati sulla durata del periodo disabilitando la possibilità di distruggere il server.

Aggiungere un Periodo Riservato durante la creazione

Per sottoscrivere un Periodo Riservato Durante la Creazione del Server, puoi aggiungere il campo "reserved_plan" nella tua richiesta come segue:

Richiesta HTTP

POST /ecs/v2/servers
{
  "plan": "ECS6",
  "image": "debian-12",
  "location": "it-fr2",
  "notes": "my-first-server",
  "reserved_plan": "M24PECS6"
}

Il campo reserved_plan è composto da:

M{durata del piano}P{Nome del piano}

dove la durata del piano può essere 3, 6 o 12 mesi

Aggiungere un Periodo Riservato su a un server già esistente

Per aggiungere un Periodo Riservato su a un server già esistente, è necessario utilizzare la seguente richiesta:

Richiesta HTTP

POST /api/v2/servers/{servername}/reserved
{
  "reserved_plan": "M24PECS6"
}

Risposta HTTP

{
  "reserved_plan": 50,
  "reserved_month": 24,
  "plan": 7,
  "discount": 20,
  "start_date": "2024-10-10 12:34...",
  "end_date": "2026-10-10 12:34...",
  "server": "ec200001"
}

Puoi ricevere i seguenti errori:

Status Code Messaggio Spiegazione
400 Formula non valida per definire il piano riservato: usare id o MxxPxxxx (M12PECS1) Hai provato a selezionare un piano riservato senza usare l'id del piano o la formula del piano riservato
404 Piano riservato non trovato Formula giusta ma nessun piano trovato
400 Non è possibile aggiungere un piano riservato a un server con un piano risorse diverso Il Piano Riservato inserito è disponibile solo per un piano risorse diverso
400 Argomento 'reserved_plan' richiesto Campo 'reserved_plan' mancante nel corpo json
400 I piani riservati non sono disponibili per il tuo profilo Il tuo account non è autorizzato a utilizzare il Piano Riservato

Supporto

Scegliere un piano di supporto per il tuo server ti permette di ricevere aiuto direttamente dai nostri ingegneri esperti; sono disponibili diversi piani di supporto, per maggiori informazioni puoi consultare il nostro sito.

Aggiungere un piano di supporto durante la creazione

Per aggiungere un Piano di Supporto Durante la Creazione del Server, puoi aggiungere il campo "support" nella tua richiesta come segue:

Richiesta HTTP

POST /ecs/v2/servers
{
  "plan": "ECS6",
  "image": "debian-12",
  "location": "it-fr2",
  "notes": "my-first-server",
  "support": "global"
}

Il campo "support" può essere: "basic" o "global.".

Per attivare un supporto "proattivo", ti consigliamo di visitare il nostro sito e contattare i nostri uffici.

Aggiungere un piano di supporto a un server già esistente

Per aggiungere o modificare un Piano di Supporto a un server già esistente, puoi usare la seguente richiesta:

Richiesta HTTP

POST /ecs/v2/servers/{server-name}/support
{
  "code": "global"
}

Risposta HTTP

{
  "status": "ok",
  "support": {
    "support_title": "global",
    "support_code": "global",
    "immutable": false,             //se è forzato a non cambiare
    "start": "2024-10-10 17:03...",
    "start": null,
    "may_downgrade": false,         //se il piano può essere declassato
    "weigth": 2,                    //il peso del piano è usato per conoscere la relazione tra downgrade e upgrade
    "days": 30,                     //durata
    "cancelled": false,
    "cancelled_at": null,
  } 
}

Puoi anche usare questo endpoint per aggiornare o declassare il tuo piano di supporto.

Puoi ricevere i seguenti errori:

Status Code Messaggio Spiegazione
400 Non è possibile modificare un piano di supporto immutabile Se il tuo piano di supporto è immutabile non puoi declassarlo
400 Codice di supporto non trovato Codice di supporto non trovato, prova un altro
400 Non è possibile declassare un piano di supporto, piano non ancora terminato... Puoi declassare il piano di supporto solo dopo che è terminato

Rimuovere un piano di supporto

Per rimuovere un piano di supporto (e impostare il supporto unmanaged), è sufficiente utilizzare la seguente richiesta:

Richiesta HTTP

DELETE /ecs/v2/servers/{server-name}/support

Risposta HTTP

{
  "status": "ok"
}

Puoi ricevere i seguenti errori:

Status Code Messaggio Spiegazione
400 Non è possibile modificare un piano di supporto immutabile Se il tuo piano di supporto è immutabile non puoi declassarlo
400 Non è possibile declassare un piano di supporto, piano non ancora terminato... Puoi declassare il piano di supporto solo dopo che è terminato

Gruppi

I gruppi ti permettono di avere una visione suddivisa dei tuoi server tramite il pannello web Ermes, possono anche essere configurati tramite i seguenti endpoint API:

Info

Per ulteriori informazioni sulla creazione di gruppi, consulta la Pagina del Gruppo.

Aggiungere un Server a un Gruppo durante la creazione

Per aggiungere il tuo server a un gruppo durante la creazione, puoi usare il campo "group":

Richiesta HTTP

POST /ecs/v2/servers
{
  "plan": "ECS6",
  "image": "debian-12",
  "location": "it-fr2",
  "notes": "my-first-server",
  "group": "eg-000001"
}

Aggiungere un Server già esistente a un Gruppo

Per aggiungere un server già esistente a un gruppo, puoi usare l'endpoint di gestione del server:

Richiesta HTTP

PUT /ecs/v2/servers/{servername}
{
  "group": "eg-000001"
}

Risposta HTTP

{
  "status": "ok"
}

Puoi ricevere i seguenti errori:

Status Code Messaggio Spiegazione
404 gruppo non trovato Impossibile trovare il gruppo richiesto

Rimuovere un Server da un Gruppo

Per rimuovere un server da un gruppo, usa la seguente richiesta:

Richiesta HTTP

PUT /ecs/v2/servers/{servername}
{
  "group": "nogroup"
}

Risposta HTTP

{
  "status": "ok"
}

Cloud Script

Il Cloud Script è una funzionalità molto potente che ti permette di eseguire uno script remoto durante l'installazione del server, per maggiori informazioni sul Cloud Script vai alla Pagina Cloud Script.

Puoi utilizzare un Cloud Script durante la creazione del server è possibile usare uno Script Temporaneo o uno script già esistente dalla tua libreria.

L' uso della libreria di script è fortemente consigliato, specialmente per l'utilizzo via API.

Script Temporaneo

Utilizzare uno Script Temporaneo o "otf" significa inviare tutto il contenuto dello script durante la richiesta di creazione del server:

Richiesta HTTP

POST /ecs/v2/servers
{
  "plan": "ECS6",
  "image": "debian-12",
  "location": "it-fr2",
  "notes": "my-first-server",
  "user_customize": "#!/bin/bash\necho \"il mio script\" > /root/out.txt"
}

Libreria di Script e variabili di ambiente

Utilizzare la Libreria di Script richiede che un Cloud Script sia già scritto nella tua Libreria di Script;.

Potrà poi essere richiamato durante la creazione:

Prendiamo, per esempio, il seguente Script con id 2:

#!/bin/bash

echo "i'm $NAME, i work in $WORK !!!" > /root/presentation.txt

Puoi utilizzarlo tramite:

Richiesta HTTP

POST /ecs/v2/servers
{
  "plan": "ECS6",
  "image": "debian-12",
  "location": "it-fr2",
  "notes": "my-first-server",
  "user_customize": 2,           // codice dello script
  "user_customize_env": "NAME=\"bob\"\nWORK=\"seeweb\""
}

Le variabili di ambiente (user_customize_env) permettono di scrivere il contenuto dello script e modificare solo i valori necessari, inoltre, sono trattate come informazioni sensibili e oscurate in quanto tali.

Le variabili di ambiente devono seguire questa sintassi per funzionare: "VARNAME1=VARCONTENT1\nVARNAME2=VARCONTENT2...".

Puoi ricevere i seguenti errori:

Status Code Messaggio Spiegazione
400 lo script powershell non può essere usato nei server linux puoi usare solo script powershell con server windows
400 Formato delle variabili env non valido controlla il campo 'user_customize_env', ricorda di usare '\n'
400 Impossibile utilizzare il percorso relativo nello script utente i percorsi relativi e i percorsi home es: '~/' non sono supportati

Utilizzare le Chiavi SSH

Per utilizzare l'autenticazione tramite Chiavi SSH via API, devi prima registrare la tua chiave SSH pubblica e utilizzarla tramite il seguente campo durante la creazione del server:

Richiesta HTTP

POST /ecs/v2/servers
{
  "plan": "ECS6",
  "image": "debian-12",
  "location": "it-fr2",
  "notes": "my-first-server",
  "ssh_key": "my-key-label"
}

Aggiungere una Rete durante la creazione

Le reti sono una funzionalità estremamente utili che introduce il discorso networking sui prodotti ecs. Per creare e gestire le reti è possibile consultare Le reti.

Per aggiungere delle reti durante la creazione è sufficiente utilizzare il campo 'networks' durante la creazione del server:

Richiesta HTTP

POST /ecs/v2/servers
{
  "plan": "ECS6",
  "image": "debian-12",
  "location": "it-fr2",
  "notes": "my-first-server",
  "networks": [
    {
        "name": "net000015",          //nome della rete
        "vlans": [                    //lista delle vlan
            {
                "vlan_id": 100,       //vlan singola
                "pvid": true          //se la vlan è pvid
            },
            {
                "vlans": "1-99"       //intervallo di vlan
            },
            {
                "vlans": "150-200"
            }
        ]
    }
  ]
}

Isolamento

L'isolamento è una funzionalità molto interessante che ti permette di isolare le risorse hardware fisiche tra due server nello stesso datacenter.

In tal modo si può garantire la sicurezza di molteplici istanze a livello di risorsa fisica.

Impostare L'isolamento

Puoi isolare un server aggiungendo il seguente campo durante la sua creazione:

Richiesta HTTP

POST /ecs/v2/servers
{
  "plan": "ECS6",
  "image": "debian-12",
  "location": "it-fr2",
  "notes": "my-isolated-server",
  "isolate_from": [
    "ecs000001",
    "ecs000002"
  ]
}

Questo forza il nuovo server a partire su un host fisico diverso da ecs000001 e ec000002.

Ottenere tutti gli isolamenti di un server

Per ottenere tutte gli isolamenti attivi per un server è possibile utilizzare la seguente richiesta:

Richiesta HTTP

/ecs/v2/servers/{servername}/isolations

Risposta HTTP

{
  "status": "ok",
  "isolations": [
    {
      "name": "ec000001",
      "notes": "my-isolated-server"
    },
    {
      "name": "ec000002",
      "notes": "my-faboulus-isolated-server"
    }
  ]
}

Ottenere lo stato del server

Per ottenere lo stato di funzionamento del server, puoi utilizzare il seguente endpoint:

Richiesta HTTP

GET /ecs/v2/servers/{servername}/status

Risposta HTTP

{
  "status": "ok",
  "server": {
    "name": "ec000001",
    "current_status": "Running"
  }
}

puoi ricevere i seguenti errori:

Status Code Messaggio Spiegazione
400 Impossibile recuperare lo stato del server Lo stato del server è esportato dal tool libvirt exporter quindi possono verificarsi errori nel recuperlo

Metriche

Il servizio ECS esporta diverse informazioni sulle prestazioni e le metriche del tuo server, puoi ottenere i consumi di CPU, Disco e Rete tramite il seguente endpoint:

Richiesta HTTP

GET /ecs/v2/servers/{servername}/metrics

Risposta HTTP

{
  "metrics": {
    "resource": "ec000001",
    "core": [
      {
        "t": "2024-10-17 08:25:58",
        "y": "0.00"
      },
      {
        "t": "2024-10-17 08:30:58",
        "y": "0.00"
      },
     ...
    ],
    "disk": {
      "reads": [
        {
          "t": "2024-10-17 08:35:58",
          "y": "28.45"
        },
        {
          "t": "2024-10-17 08:40:58",
          "y": "0.00"
        },
        ...
      ],
      "writes": [
        {
          "t": "2024-10-17 08:35:58",
          "y": "2.37"
        },
        {
          "t": "2024-10-17 08:40:58",
          "y": "0.00"
        },
        ...
      ]
    },
    "network": {
      "received": [
        {
          "t": "2024-10-17 08:35:58",
          "y": "0.00"
        },
        {
          "t": "2024-10-17 08:40:58",
          "y": "0.00"
        },
        ...
      ],
      "transmitted": [
        {
          "t": "2024-10-17 08:35:58",
          "y": "0.00"
        },
        {
          "t": "2024-10-17 08:40:58",
          "y": "0.00"
        },
        ...
      ]
    }
  }
}

Distruggere un Server

Per distruggere un Server è disponibile la seguente richiesta:

Richiesta HTTP

DELETE /ecs/v2/servers/{servername}

Risposta HTTP

{
  "status": "ok",
  "action": {
    "id": 39,
    "status": "in-progress",
    "user": "foo",
    "created_at": "2019-04-30T16:33:03.317800+00:00",
    "started_at": "2019-04-30T16:33:03.317019+00:00",
    "completed_at": null,
    "resource": "ec200016",
    "resource_type": "ECS",
    "type": "delete_server",
    "progress": 0
  }
}