101 lines
3.0 KiB
HCL
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
|
|
} |