Le lab des experts Nouveautés et mises à jour

Déployez vos applications multi-serveurs avec les réseaux privés GandiCloud VPS

Déployez vos applications multi-serveurs avec les réseaux privés GandiCloud VPS

Aujourd’hui, nous introduisons une nouvelle fonctionnalité sur GandiCloud VPS: les réseaux privés.
Cette fonctionnalité est pour le moment disponible via notre API publique et nous travaillons à l’ajouter dans votre interface d’administration Gandi prochainement, de la manière la plus simple d’utilisation possible.

Les réseaux privés permettent la communication entre plusieurs serveurs déployés dans l’infrastructure de Gandi, même si tous ces serveurs n’ont pas d’interface sur le réseau public. De cette manière, on évite d’exposer sur le réseau public des machines et services qui n’en ont pas besoin.

Exemple de déploiement d’un réseau privé sur GandiCloud VPS

Comme toutes les fonctionnalités GandiCloud VPS, les réseaux privés peuvent être gérés via notre API publique OpenStack.

Il est donc possible de gérer ses ressources GandiCloud VPS (serveurs, volumes, réseaux…) grâce à l’ensemble des outils qui savent s’interfacer avec OpenStack, comme Terraform ou son récent fork OpenTofu.

Il est aussi possible d’utiliser la CLI OpenStack, notre documentation à ce sujet étant disponible en suivant ce lien.

Dans cet article, nous vous proposons pour l’exemple de déployer un serveur asciinema, logiciel permettant d’héberger nos propres enregistrements de console, grâce à OpenTofu.

Ce déploiement de démonstration s’appuiera sur un dépôt de code disponible sur Github, décrivant notamment les ressources GandiCloud VPS utilisées:

  • Un réseau privé asciinema_private_network avec son sous-réseau (10.0.1.0/24)
  • 1 serveur db_server hébergeant une base de données PostgreSQL qui écoutera sur une addresse de ce réseau privé
  • 1 serveur asciinema_server hébergeant le service asciinema-server, connecté à sa base de données via le réseau privé

Le serveur asciinema_server sera aussi connecté au réseau public afin de pouvoir exposer son service sur internet. Par simplicité, nous allons aussi fournir une IP publique au serveur de base de données afin de lui permettre de récupérer les paquets nécessaires à son installation.

En bonus, le provider Terraform Gandi nous permettra de configurer automatiquement la zone DNS de notre nom de domaine enregistré chez Gandi, afin d’accéder facilement à notre nouveau service.

Pré-requis

Pour effectuer ce déploiement nous aurons besoin de:

  • Git,
  • OpenTofu,
  • Un fichier de configuration pour l’API OpenStack GandiCloud VPS, que vous pouvez créer en suivant cette documentation
  • Un Personal Access Token pour accéder à l’API publique LiveDNS de Gandi, que vous pouvez créer dans votre compte Gandi (plus d’informations dans la documentation de l’API publique). Ce token doit avoir la permission de gérer la zone DNS de votre domaine utilisant liveDNS.

Configuration initiale

Commençons par sourcer le fichier d’accès OpenStack afin que notre shell courant contienne les variables d’environnement nécessaires à l’authentification sur GandiCloud VPS:

source <chemin vers ma_conf_gandivps.sh>

Afin de récupérer les sources du déploiement, nous pouvons maintenant cloner le répertoire suivant et initialiser OpenTofu:

git clone https://github.com/gandi/demo-private-networks-gandicloud
cd demo-private-networks-gandicloud
tofu init

Nous pouvons à présent fournir notre personal access token Gandi :

source ./personal_access_token.sh

Un dernier fichier de configuration est nécessaire afin d’indiquer les paramètres spécifiques de notre déploiement, que nous pouvions copier avec un nom connu par OpenTofu:

cp terraform.tfvars.example terraform.tfvars

Il ne nous reste plus qu’à éditer son contenu :

admin_ssh_pubkey = “<votre clé publique pour l’accès ssh aux serveurs>”
manage_dns_record_using_livedns = true
asciinema_server_domain_apex = “<votre-nom-de-domaine example.local>”
asciinema_server_subdomain = “<le sous-domaine sur lequel sera exposé votre serveur asciinema>”

Nous sommes prêts à déployer !

Déploiement

Une fois l’environnement configuré, le déploiement avec un outil comme Terraform ou OpenTofu est extrêment simple et s’appuie sur 2 commandes :

tofu plan
tofu apply

La première va vous permettre de vérifier les changements à opérer (elle listera donc avant le déploiement l’ensemble des ressources à créer). La seconde va appliquer ces changements.

Suite à l’exécution de ces commandes et le déploiement de votre infrastructure, vous devriez voir les informations relatives à votre nouvelle infrastructure s’afficher :

Congrats!
To connect to the DB server: ssh <votre-serveur-de-base-de-donnees>
To connect to the asciinema server: ssh <votre-serveur-asciinema>
Your private network asciinema_private_network has 1 subnet: 10.0.1.0/24. 

– asciinema server has private IP <ip-privée-du-serveur-asciinema> 

– DB server has private IP <ip-privée-du-serveur-de-base-de-donnees>
To register, you can visit http://<fqdn-de-votre-déploiement>
To upload your record to your server using the asciinema client:
  ASCIINEMA_API_URL=http://<fqdn-de-votre-déploiement> asciinema rec

A noter que l’installation des différentes applications est faite via cloud-init lors du boot des serveurs. Celle-ci peut donc prendre quelques secondes après le démarrage des serveurs. Pour suivre l’avancement de l’installation, vous pouvez consulter le fichier /var/log/cloud-init-output.log dans vos serveurs.

Par ailleurs si vous souhaitez en savoir plus sur les options de configuration du serveur asciinema, vous pouvez consulter la documentation dédiée.

Enfin, si vous souhaitez supprimer les ressources, il vous suffit d’utiliser la commande suivante :

tofu destroy

Pour plus d’informations sur l’utilisation des réseaux privés, rendez-vous dans notre documentation

Autres fonctionnalités GandiCloud VPS pour vos infrastructures

Ce déploiement très simple a pour but de montrer l’utilisation des réseaux privés sur GandiCloud VPS. Toutefois pour des déploiements d’applications hébergeant vos données ou de la production, GandiCloud VPS propose de nombreuses autres fonctionnalités que vous pouvez intégrer à vos déploiements et piloter via API ou notre interface. Quelques unes de ces fonctionnalités :

Comme toujours, n’hésitez pas à nous partager vos retours sur feedback@gandi.net !