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.
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.
curl -s https://api.hostaria.cloud/v1/offers
curl -s -H "Authorization: Bearer $HOSTARIA_API_KEY" https://api.hostaria.cloud/v1/osdata "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é.
| name | vCPU | RAM | Disque | Prix |
|---|---|---|---|---|
Starter | 2 | 2 Go | 30 Go | 3.99 € |
Booster | 2 | 4 Go | 40 Go | 5.99 € |
Ultra | 4 | 8 Go | 60 Go | 12.99 € |
Extreme | 8 | 16 Go | 100 Go | 24.99 € |
Titan | 16 | 32 Go | 160 Go | 48.99 € |
Systèmes
Ce slug se met dans data.hostaria_os. Un autre slug est refusé.
| slug | Nom |
|---|---|
ubuntu-24-04 | Ubuntu 24.04 |
rocky-9-7 | Rocky 9.7 |
rocky-10.2 | Rocky 10 |
debian-12 | Debian 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.
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.
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é.
#cloud-config
runcmd:
- |
#!/bin/bash
apt-get install -y nginxLimite : 32 Ko. Au-delà, la création est refusée.
Scale
OK : cpu_cores, ram_mb, offer_idram_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.
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.