Bonjour,
Je suis en train de tester Terraform avec le cloud public OVH. Je suis la documentation suivante, écrite par OVH : https://docs.ovh.com/fr/public-cloud/utiliser-terraform/
Il y a un oubli au paragraphe "Créer des instances multiples" qui m'a fait bloquer pendant un moment ^^'.
Pour créer des instances dans des régions multiples, il faut modifier le fichier providers.tf créé à l'étape précédente. Il faut indiquer :
terraform {
required_version = ">= 0.14.0" # Prend en compte les versions de terraform à partir de la 0.14.0
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.42.0"
}
ovh = {
source = "ovh/ovh"
version = ">= 0.13.0"
}
}
}
provider "openstack" {
auth_url = "https://auth.cloud.ovh.net/v3/" # URL d'authentification
domain_name = "default" # Nom de domaine - Toujours à "default" pour OVHcloud
alias = "ovh_bhs5" # Un alias
region = "BHS5"
}
provider "openstack" {
auth_url = "https://auth.cloud.ovh.net/v3/" # URL d'authentification
domain_name = "default" # Nom de domaine - Toujours à "default" pour OVHcloud
alias = "ovh_sbg5" # Un alias
region = "SBG5"
}
provider "openstack" {
auth_url = "https://auth.cloud.ovh.net/v3/" # URL d'authentification
domain_name = "default" # Nom de domaine - Toujours à "default" pour OVHcloud
alias = "ovh_gra11" # Un alias
region = "GRA11"
}
Il serait bien que la documentation soit mise à jour car cela peut bloquer certaines personnes comme moi ![]()
C'est sympas à toi de t'inscrire pour le signaler et surtout donner le fix.
A voir maintenant si le Staff OVH verra le post et fera remonter l'info.
Possible remarque, il sont de plus en plus présent ici (Ou alors c'est juste une impression).
Bonjour,
les docs OVH sont sur github et donc libre de modification (sous réserve de validation par OVH de la modification), c'est le bouton contribuer en haut à gauche de la doc
Cordialement, janus57
Je préfére ne pas mettre à jour la doc moi même pour l'instant. Je me suis débloqué avec cette solution mais je suis débutant sur terraform. Je préfère ne pas écrire de bêtises.
Bonjour,
il n'y a pas de bêtises, comme dit plus haut la modification est soumis à validation par quelqu'un d'OVH (qui normalement connait le produit), donc au pire la solution est "fausse" mais cela va permettre à OVH de détailler un peu plus la partie qui vous semblez incorrecte.
Cordialement, janus57
Je suis arrivé au bout de la doc (pfiou… ^^)
Dans la partie "Créer une instance dans le réseau OVHcloud". Voici mon fichier provider.tf
terraform {
required_version = = 0.14.0" # Prend en compte les versions de terraform à partir de la 0.14.0
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.42.0"
}
ovh = {
source = "ovh/ovh"
version = = 0.13.0"
}
}
}
provider "ovh" {
#alias = "ovh" # Un alias
endpoint = "ovh-eu"
application_key = "sdfsdf"
application_secret = "sdfsdfsdf"
consumer_key = "sfsfsssf"
}
provider "openstack" {
auth_url = "https://auth.cloud.ovh.net/v3/" # URL d'authentification
domain_name = "default" # Nom de domaine - Toujours à "default" pour OVHcloud
alias = "openstack" # Un alias
#region = "GRA3"
}
Et mon fichier create_private_network_instance.tf
> resource "ovh_vrack_cloudproject" "vcp" {
> service_name = "VRACK_NAME" # Remplacez par le nom de votre vRack
> project_id = "OS_TENANT_ID" # Remplacez OS_TENANT_ID par votre Tenant ID de projet
> }
> # 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
> }
> # Création d'un sous-réseau grâce au réseau privé créé précédemment
> resource "ovh_cloud_project_network_private_subnet" "subnet" {
> service_name = "OS_TENANT_ID" # Remplacez OS_TENANT_ID par votre Tenant ID de projet
> # Identifiant de la ressource ovh_cloud_network_private nommée network
> network_id = ovh_cloud_project_network_private.network.id
> start = "192.168.168.100" # Première IP du sous réseau
> end = "192.168.168.200" # Dernière IP du sous réseau
> network = "192.168.168.0/24" # Place d'adressage IP du sous réseau
> dhcp = true # Activation du DHCP
> region = "OS_REGION_NAME" # Remplacez OS_REGION_NAME par la variable d'environnement OS_REGION_NAME
> provider = ovh # Nom du fournisseur
> no_gateway = true # Pas de gateway par defaut
> }
> # Création d'une instance avec 2 interfaces réseau
> resource "openstack_compute_instance_v2" "proxy_instance" {
> provider = openstack.openstack # Nom du fournisseur
> name = "proxy_instance" # Nom de l'instance
> image_name = "Debian 10" # Nom de l'image
> flavor_name = "s1-2" # Nom du type d'instance
> # Nom de la ressource openstack_compute_keypair_v2 nommée test_keypair
> key_pair = openstack_compute_keypair_v2.test_keypair.name
> # Ajout du réseau public et privé
> network {
> name = "Ext-Net"
> }
> network {
> name = ovh_cloud_project_network_private.network.name
> }
> }
Pour la partie "Creation d’une infrastructure pour un site web", ça fonctionne ensuite sur le même principe.
Bonjour @ThibaultC13 et merci pour ta contribution.
Je suis en train de suivre le même guide que toi, et j'ai pu spawner des instances simples avec Terraform sans souci. Mon problème est que depuis que je tente d'associer mon vRack à mon projet public cloud, je suis totalement bloqué. En gros, tout ce qui est provider openstack fonctionne bien, mais je prends des 403 sur tout ce qui touche au provider ovh.
Voilà mon fichier provider.tf, comme dans la doc mais sans l'alias ovh qui pose pas mal problème :
# Define providers and versions
terraform {
required_version = = 0.14.0"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.42.0"
}
ovh = {
source = "ovh/ovh"
version = = 0.13.0"
}
}
}
# Configure OpenStack provider for OVH
provider "openstack" {
auth_url = "https://auth.cloud.ovh.net/v3/"
domain_name = "default"
alias = "ovh"
}
# Configure OVH variables
provider "ovh" {
// alias = "ovh"
endpoint = "ovh-eu"
application_key = "blaa"
application_secret = "blou"
consumer_key = "bli"
}
J'ai créé un vRack au clic, et j'ai fait un GET /vrack pour récupérer son service_name, le string est formé comme ça "pn-108XXXX" avec XXXX = les quatre derniers chiffres.
Mais dès que je commence à essayer d'utiliser le provider ovh dans mon instance.tf, par exemple pour associer mon vRack à mon projet, je prends des 403 :
resource "ovh_vrack_cloudproject" "vcp" {
service_name = "pn-108XXXX"
project_id = "OS_TENANT_ID" /: ici je remplace par le bon
}
Je fais :
source openrc.tf
terraform plan
terraform apply
yes
Et là je prends un 403 :
Error: Error calling POST /vrack/pn-108XXXX/cloudProject with opts &{OS_TENANT_ID}:
│ "Error 403: "This call has not been granted""
En revanche, cette commande si je pars la faire au clic sur https://eu.api.ovh.com/console/ eh bien là elle fonctionne bien. Donc je ne comprends pas.
Au passage, en plus de tous ces problèmes, si quelqu'un arrive à créer son vRack directement dans Terraform, ce serait encore mieux. Y aller au clic c'est quand même pas l'idéal.
Merci d'avance.