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" } sops = { source = "carlpett/sops" version = "~> 0.6.2" } } } locals { region = "GRA7" auht_url = "https://auth.cloud.ovh.net/v2.0/" } data "sops_file" "openstack-secret" { source_file = "data/openstack.yml" } data "sops_file" "ovh-secret" { source_file = "data/ovh.yml" } locals { openstack_creds = yamldecode(data.sops_file.openstack-secret.raw) } locals { ovh_creds = yamldecode(data.sops_file.ovh-secret.raw) } provider "ovh" { endpoint = "ovh-eu" application_key = local.ovh_creds.app_key application_secret = local.ovh_creds.app_secret consumer_key = local.ovh_creds.consumer_key } provider "sops" { } provider "openstack" { region = local.region tenant_id = local.openstack_creds.tenant_id password = local.openstack_creds.password user_name = local.openstack_creds.user auth_url = local.auht_url } resource "openstack_compute_keypair_v2" "my-keypair" { name = "my-keypair" public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBo80Dw18iUKeFuOFmq8CRCqCzPkk+25gErNGPCduBMrNY4vNGwk16FU6Bs4TqAF00tI7+YOZLc70qP8NKwWlUuW2hqnLMot1beztDbCTd9hbQ4J8rQ8Jz6NAhKGB8TqGBRJOAr6kmB06xZaL2j8AlQK8LEBndxAeQwCcUO5oEbQmuCUybtxuu4YZzHiNK8G0T6Faa6wWwBmN0SUGKSLKWB6AxpuSipnDgYSiHACgSSgq0kISLuBq/Jpe8l+ISwtM4vlDiivECNciNu/ZFVXmGANVTCskEr2Jzjz3lJBGFFOdd+yAGC8OY2X4onkAKkVPf9TDySOj95G/+bkTVaRa4wei0bzGWm88gFdYhaG9kbQVBj7DrNbCcqC7+nOzvR+9CzZ1opSUb5G4Uc6thCzhMycjPrUu5zkOC254IdmKWmUXMTLuCLTDAKJougYKwIhDS2+ZuIaMMUpB2NwU/2eV7+TF2HVQfToCe7Q1FEH1KKOBHlQsqwbBtAmPLwWwxdpSyVeWXbz1BgvuyGa6GKoKo4DeU3MUCV+WN2A0rLmwY7kgqJzUb7GAagj3hxwdPg0MgEPSEACInCw7zaa3TEZVDAuVgm3Oxt3FYeN+CcRIQsxJQefwy+/M6GI0MvXV6PDxGxmgwEoqbM6Bs7Jk17DNYOhgTVKgyeBPbATKPbjDPoQ==" } resource "openstack_compute_instance_v2" "test" { name = "test" key_pair = openstack_compute_keypair_v2.my-keypair.id network { name = "Ext-Net" } network { name = ovh_cloud_project_network_private.private-network.name } } resource "ovh_cloud_project_network_private" "private-network" { service_name = local.openstack_creds.tenant_id # With OS_TENANT_ID your tenant id's project name = "private_network" # Network's name regions = [local.region] # With OS_REGION_NAME the OS_REGION_NAME environment variable vlan_id = 168 # vRack identifier } resource "ovh_cloud_project_network_private_subnet" "subnet" { service_name = local.openstack_creds.tenant_id # With OS_TENANT_ID your tenant id's project # Get the id of the resource ovh_publiccloud_private_network named network network_id = ovh_cloud_project_network_private.private-network.id start = "192.168.168.100" # First IP for the subnet end = "192.168.168.200" # Last IP for the subnet network = "192.168.168.0/24" # Global network dhcp = true # Active the DHCP region = local.region # With the OS_REGION_NAME the OS_REGION_NAME environment variable }