diff --git a/modules/pah/main.tf b/modules/pah/main.tf index e69de29..48a7541 100644 --- a/modules/pah/main.tf +++ b/modules/pah/main.tf @@ -0,0 +1,75 @@ +# Define required providers +terraform { + required_providers { + openstack = { + source = "terraform-provider-openstack/openstack" + version = "3.0.0" + } + } +} + +data "openstack_networking_network_v2" "ext_net" { + name = "ntnu-internal" +} + +# Network and Subnet Definitions +resource "openstack_networking_network_v2" "net_pah" { + name = "net-pah" +} +resource "openstack_networking_subnet_v2" "subnet_pah" { + network_id = openstack_networking_network_v2.net_pah.id + cidr = "10.0.1.0/24" +} + +# Router and Interfaces +resource "openstack_networking_router_v2" "router" { + name = "router-main" + external_network_id = data.openstack_networking_network_v2.ext_net.id +} + +resource "openstack_networking_router_interface_v2" "int_pah" { + router_id = openstack_networking_router_v2.router.id + subnet_id = openstack_networking_subnet_v2.subnet_pah.id +} + +# Security Groups +resource "openstack_networking_secgroup_v2" "sec_pah" { + name = "secgroup-pah" +} +resource "openstack_networking_secgroup_rule_v2" "pah_ssh" { + security_group_id = openstack_networking_secgroup_v2.sec_pah.id + direction = "ingress" + ethertype = "IPv4" + protocol = "tcp" + port_range_min = 22 + port_range_max = 22 + remote_ip_prefix = "0.0.0.0/0" +} + +# Instances +resource "openstack_compute_instance_v2" "pah" { + name = "PAH" + image_name = "Ubuntu Server 24.04 LTS (Noble Numbat) amd64" + flavor_name = "gx3.4c4r" + key_pair = "JA-H" + security_groups = [openstack_networking_secgroup_v2.sec_pah.name] + network { + port = openstack_networking_port_v2.port_pah.id + } +} + +resource "openstack_networking_floatingip_v2" "fip_pah" { + pool = data.openstack_networking_network_v2.ext_net.name +} + +resource "openstack_networking_port_v2" "port_pah" { + network_id = openstack_networking_network_v2.net_pah.id + fixed_ip { + subnet_id = openstack_networking_subnet_v2.subnet_pah.id + } +} + +resource "openstack_networking_floatingip_associate_v2" "fip_association_pah" { + floating_ip = openstack_networking_floatingip_v2.fip_pah.address + port_id = openstack_networking_port_v2.port_pah.id +} \ No newline at end of file diff --git a/pah/main.tf b/pah/main.tf index e69de29..16499fd 100644 --- a/pah/main.tf +++ b/pah/main.tf @@ -0,0 +1,17 @@ +terraform { + required_providers { + openstack = { + source = "terraform-provider-openstack/openstack" + version = "3.0.0" + } + } +} + +# Configure the OpenStack Provider +provider "openstack" { + cloud = "openstack" +} + +module "capev2" { + source = "../modules/pah" +} \ No newline at end of file