101 lines
3.0 KiB
HCL

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
}