Le provider OVH pour terrafom sert à déployer une infrastructure réseau avec Terraform: création de vlan et rattachement des serveurs à ce vlan, rattachement d'un tenant à un vrack...
Au 8/11 celui-ci est en version 0.16, je suppose donc qu'il n'est pas considéré comme une version définitive par OVH?
En l'utilisant je suis tombé sur ce qui me semble être des bugs. J'ai pu contourner ceux ci non sans effort de recherche de ma part. Je n'ai pas noté tous les messages d'erreur que j'ai obtenu je me contenterais donc parfois de dire "j'obtiens une erreur"
#1 : support des alias
Le provider ovh ne semble pas supporter la définition d'alias contrairement à ce qui est indiqué dans la documentation.
Par exemple, je définis mon provider de la façon suivante:
> provider "ovh" {
> endpoint = "ovh-eu" # Point d'entrée du fournisseur
> alias = "ovh" # Alias du fournisseur
> }
Puis je tente de créer un réseau privé. L'alias est réutilisé au niveau du champ provider:
> # Création d'un réseau privé
> resource "ovh_cloud_project_network_private" "network" {
> service_name = "OS_TENANT_ID" # Remplacez OS_TENANT_ID par votre Tenant ID de projet
> name = "private_network" # Nom du réseau
> regions = ["OS_REGION_NAME"] # Remplacez OS_REGION_NAME par la variable d'environnement OS_REGION_NAME
> provider = ovh.ovh # Nom du fournisseur
> vlan_id = 168 # Identifiant du vlan pour le vRrack
> depends_on = [ovh_vrack_cloudproject.vcp] # Dépend de l'association du vrack au projet cloud
> }
J'obtiens alors une erreur. Lors que j'écris le code suivant (c'est à dire sans alias) tout fonctionne bien:
> provider "ovh" {
> endpoint = "ovh-eu" # Point d'entrée du fournisseur
> }
> # Création d'un réseau privé
> resource "ovh_cloud_project_network_private" "network" {
> service_name = "OS_TENANT_ID" # Remplacez OS_TENANT_ID par votre Tenant ID de projet
> name = "private_network" # Nom du réseau
> regions = ["OS_REGION_NAME"] # Remplacez OS_REGION_NAME par la variable d'environnement OS_REGION_NAME
> provider = ovh # Nom du fournisseur
> vlan_id = 168 # Identifiant du vlan pour le vRrack
> depends_on = [ovh_vrack_cloudproject.vcp] # Dépend de l'association du vrack au projet cloud
> }
#2 : support des variables d'environnement
L'emploi du provider ovh nécessite 3 variables d'environnement:
> export OVH_APPLICATION_KEY=Votre_cle_dapplication_OVH(ou_AK)
> export OVH_APPLICATION_SECRET=Votre_cle_dapplication_secrete_OVH(ou_AS)
> export OVH_CONSUMER_KEY=Votre_token(ou_CK)
Hors, pour que cela fonctionne, je dois indiquer ces paramètres sensibles au niveau de la définition de mon provider:
> provider "ovh" {
> #alias = "ovh" # Un alias
> endpoint = "ovh-eu"
> application_key = "Xu..."
> application_secret = "xz.."
> consumer_key = "Sb..."
> }
#3: connexion aux serveurs n'ayant qu'une ip privée
Je créé deux serveurs front ayant à la fois un IP publique et une IP privée. Je créé également un serveur back n'ayant qu'une IP privée.
> resource "ovh_cloud_project_network_private" "private_network" {
> service_name = "c076ca2979904ef6bf93faff181dab18" # Remplacer OS_TENANT_ID par votre Tenant ID de projet
> name = "backend" # Nom du réseau
> regions = ["SBG5"] # Remplacez OS_REGION_NAME par la variable d'environnement OS_REGION_NAME
> provider = ovh.ovh # Nom du fournisseur
> vlan_id = 42 # Identifiant du vlan pour le vRrack
> depends_on = [ovh_vrack_cloudproject.vcp] # Depend de l'association du vRack au projet cloud
> }
> resource "ovh_cloud_project_network_private_subnet" "private_subnet" {
> # Identifiant de la ressource ovh_cloud_network_private nommée private_network
> network_id = ovh_cloud_project_network_private.private_network.id
> service_name = "c076ca2979904ef6bf93faff181dab18" # Remplacez OS_TENANT_ID par votre Tenant ID de projet
> region = "SBG5" # Remplacez OS_REGION_NAME par la variable d'environnement OS_REGION_NAME
> network = "192.168.42.0/24" # IP du sous réseau
> start = "192.168.42.2" # Première IP du sous réseau
> end = "192.168.42.200" # Dernière IP du sous réseau
> dhcp = false # Désactivation du DHCP
> provider = ovh.ovh # Nom du fournisseur
> no_gateway = true # Pas de gateway par defaut
> }
> data "openstack_images_image_v2" "archlinux" {
> name = "Archlinux" # Nom de l'image
> most_recent = true # Limite la recherche à la plus récente
> provider = openstack.ovh # Nom du fournisseur
> }
> variable "front_private_ip" {
> type = list(any)
> default = ["192.168.42.2", "192.168.42.3"]
> }
> resource "openstack_compute_instance_v2" "front" {
> count = length(var.front_private_ip) # Nombre d'instances à créer
> provider = openstack.ovh # Nom du fournisseur
> name = "front" # Nom de l'instance
> key_pair = openstack_compute_keypair_v2.test_keypair.name
> flavor_name = "s1-2" # Nom du type d'instance
> image_id = data.openstack_images_image_v2.archlinux.id # Identifiant de l'image de l'instance
> security_groups = ["default"] # Ajoute l'instance au groupe de sécurité
> network {
> name = "Ext-Net" # Nom de l'interface réseau publique
> }
> network {
> # Nom de l'interface réseau privé
> name = ovh_cloud_project_network_private.private_network.name
> # Adresse IP prise depuis la liste définie précédemment
> fixed_ip_v4 = element(var.front_private_ip, count.index)
> }
> depends_on = [ovh_cloud_project_network_private_subnet.private_subnet] # Dépend du réseau privé
> }
> resource "openstack_blockstorage_volume_v2" "backup" {
> name = "backup_disk" # Nom du périphérique de stockage
> size = 10 # Taille
> provider = openstack.ovh # Nom du fournisseur
> }
> resource "openstack_compute_instance_v2" "back" {
> provider = openstack.ovh # Nom du fournisseur
> name = "back" # Nom de l'instance
> key_pair = openstack_compute_keypair_v2.test_keypair.name
> flavor_name = "s1-2" # Nom du type d'instance
> image_id = data.openstack_images_image_v2.archlinux.id # Identifiant de l'image de l'instance
> security_groups = ["default"] # Ajoute l'instance au groupe de sécurité
> network {
> name = ovh_cloud_project_network_private.private_network.name # Nom du réseau privé
> fixed_ip_v4 = "192.168.42.150" # Addresse IP privée choisie arbitrairement
> }
> # Périphérique de stockage bootable contenant l'OS
> block_device {
> uuid = data.openstack_images_image_v2.archlinux.id # Identifiant de l'image de l'instance
> source_type = "image" # Type de source
> destination_type = "local" # Destination
> volume_size = 10 # Taille
> boot_index = 0 # Ordre de boot
> delete_on_termination = true # Le périphérique sera supprimé quand l'instance sera supprimée
> }
> # Périphérique de stockage
> block_device {
> source_type = "blank" # Type de source
> destination_type = "volume" # Destination
> volume_size = 20 # Taille
> boot_index = 1 # Ordre de boot
> delete_on_termination = true # Le périphérique sera supprimé quand l'instance sera supprimée
> }
> # Périphérique de stockage créé précédemment
> block_device {
> uuid = openstack_blockstorage_volume_v2.backup.id # Identifiant du périphérique de stockage
> source_type = "volume" # Type de source
> destination_type = "volume" # Destination
> boot_index = 2 # Ordre de boot
> delete_on_termination = true # Le périphérique sera supprimé quand l'instance sera supprimée
> }
> depends_on = [ovh_cloud_project_network_private_subnet.private_subnet] # Dépend du réseau privé
> }
Je me connecte en ssh à l'un des serveurs front. Je tente de pinger le serveur back. Il est impossible de pinger le serveur back.
A présent je détruis mon infrastructure. Je la recréé mais cette fois avec le serveur back ayant à la fois une IP privée et une publique.
J'utilise l'API nova pour détruire l'IP publique du serveur back:
`nova interface-detach `
Je me connecte en ssh à l'un des serveurs front. Je tente de pinger le serveur back. Et ça fonctionne :)
Public Cloud OVHcloud - Terraform : feedback provider OVH
Willkommen in der OVHcloud Community
Stellen Sie Fragen, suchen Sie nach Informationen, veröffentlichen Sie Inhalte und interagieren Sie mit anderen Mitgliedern der OVHcloud Community.
Frage
Terraform : feedback provider OVH
Von
Positive Bewertungen (1)
1080 Ansichten
Related questions
- Dimensionnement serveur MySQL
41364
07.11.2018 12:32
- [RESOLU] Connexion impossible en SSH
34715
05.06.2019 20:05
- Bonjour, Je n'est reçus aucun mot de passe root lors de mon achat!
30202
05.02.2018 20:47
- Gitlab private docker registry
29909
16.03.2018 13:05
- Configuration IP failover avec netplan (Ubuntu 17.10)
28682
12.01.2018 23:23
- Ssh connection timed out port 22
27647
11.12.2019 08:21
- IP Failover sur Debian 9
27453
18.11.2016 20:40
- Problème connexion ssh
26745
04.02.2018 09:46
- Instance Public Cloud en "error"
24917
15.12.2025 10:04
- Connexion OpenStack Swift Object Storage
21787
11.04.2019 10:09
An Diskussion teilnehmen
Most recent in same Forum
- Account Creation Confirm Button Doesn't Work
- Cloud Archive: rsync renvoie des erreurs "file failed verification -- update retained"
- Comment donner acces au developer sur OVH pour creer un site internet sans qu'il puisse avoir acces a tous les comptes sur OVH
- Est-ce qu'OVH bloque l'accès à Internet depuis un VLAN interne lors du passage par une VM pontée (avec une adresse IP publique) ?
- Does Public Cloud support exposing internal vlan VM to internet via virtual gateway?