Documentation

Hostaria Terraform / OpenTofu

https://api.hostaria.cloud

Démarrage

Clé host_live_… : /profile/developer. Affichée une seule fois.
Carte : /profile/billing. Sans carte, la création d’un VPS est refusée.

HCL
terraform {
  required_providers {
    hostaria = { source = "hostaria/hostaria" }
  }
}

provider "hostaria" {
  endpoint = "https://api.hostaria.cloud"
  api_key  = var.hostaria_api_key
}

Offres et OS

Offre : name du tableau. OS : slug du tableau.
Une valeur absente du tableau est refusée.

Bash
curl -s https://api.hostaria.cloud/v1/offers
curl -s -H "Authorization: Bearer $HOSTARIA_API_KEY" https://api.hostaria.cloud/v1/os
HCL
data "hostaria_offer" "picked" {
  name = "…" # name du tableau
}

data "hostaria_os" "picked" {
  slug = "…" # slug du tableau
}

Offres

Ce nom se met dans data.hostaria_offer. Un autre nom est refusé.

namevCPURAMDisquePrix
Starter22 Go30 Go3.99 €
Booster24 Go40 Go5.99 €
Ultra48 Go60 Go12.99 €
Extreme816 Go100 Go24.99 €
Titan1632 Go160 Go48.99 €

Systèmes

Ce slug se met dans data.hostaria_os. Un autre slug est refusé.

slugNom
ubuntu-24-04Ubuntu 24.04
rocky-9-7Rocky 9.7
rocky-10.2Rocky 10
debian-12Debian 12

Créer un VPS

cpu_cores, ram_mb, storage_gb vides = les valeurs de l’offre.
Nom déjà pris : un suffixe est ajouté.
terraform destroy supprime le VPS. Les données du disque sont perdues.

HCL
resource "hostaria_vps" "web" {
  offer_id = data.hostaria_offer.picked.id
  os_id    = data.hostaria_os.picked.id
  name     = "web-01"

  bootstrap {
    username    = "deploy"
    ssh_key_ids = [hostaria_ssh_key.ci.id]
  }
}

Défauts

Vide →
- username : admin
- password : aléatoire, envoyé par email
- clés SSH : celles de /profile/ssh. Aucune, ni dans ce bloc : refusé
- user_data : rien

Interdit : clé privée.

HCL
resource "hostaria_ssh_key" "ci" {
  name       = "ci"
  public_key = file("~/.ssh/id_ed25519.pub")
}

resource "hostaria_vps" "web" {
  offer_id = data.hostaria_offer.picked.id
  os_id    = data.hostaria_os.picked.id

  bootstrap {
    username        = "deploy"
    ssh_public_keys = ["ssh-ed25519 AAAA..."]
  }
}

Cloud-init

Interdit, géré par l'API
- réseau, DNS
- users
- bootcmd
- clés SSH, authorized_keys

Autorisé
- hostname, fqdn
- timezone, locale
- packages
- runcmd
- write_files (fichiers de l'application)

user_data ne passe qu'à la création. Le changer recrée le VPS.

Le texte commence par #cloud-config. Un fichier qui commence par #!/bin/bash est refusé. Dans runcmd ou write_files, un script bash est autorisé.

YAML
#cloud-config
runcmd:
  - |
    #!/bin/bash
    apt-get install -y nginx

Limite : 32 Ko. Au-delà, la création est refusée.

Scale

OK : cpu_cores, ram_mb, offer_id
ram_mb : pas de 512. Autre valeur : refusée.
cpu_cores sous le plancher de l'offre : refusé.
Interdit : storage_gb plus petit.
Recrée : os_id, name, user_data

Le VPS est arrêté le temps du changement, puis relancé s'il tournait.

HCL
resource "hostaria_vps" "web" {
  offer_id   = data.hostaria_offer.picked.id
  os_id      = data.hostaria_os.picked.id
  cpu_cores  = 4
  ram_mb     = 4096
  storage_gb = 40
}

Facturation

VPS créé ici : facturé à l'heure, pas au mois prépayé du site.
Le prix mensuel de l'offre est réparti sur 730 h.
Allumé : 100 % du tarif horaire.
Éteint : 20 %.
Carte : /profile/billing.

Clé API · Facturation