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 :
- les Security groups permettent de définir des règles de firewalling en amont de vos serveurs pour mieux controller leur exposition sur l’extérieur
- les snapshots permettent de revenir à un état précédent d’un disque (par exemple en cas de mauvaise manipulation) et les snapshots automatiques permettent d’en créer régulièrement,
- le changement de taille d’un serveur, l’ajout de disques additionnels et l’augmentation de la taille d’un disque sur demande vous permettent d’adapter votre déploiement au fur et à mesure de sa croissance.
Comme toujours, n’hésitez pas à nous partager vos retours sur feedback@gandi.net !