diff --git a/terraform_provisioning/README.md b/terraform_provisioning/README.md new file mode 100644 index 00000000..db1730fa --- /dev/null +++ b/terraform_provisioning/README.md @@ -0,0 +1,9 @@ +# terraform_privisioning +* This folder contains terraform scripts to manage openstack configurations +* These require a `clouds.yaml` in `~/.config/openstack/` to provide authentication + +## priv_network.tf +* This terraform scripts creates a private network with a subnet domain of `10.0.0.x` +* It also adds a router to connect the private network to the external network +* You must provide a external_network_id to connect to router to +* The script must be run with `--var-file=vars.tfvars` to pass through the required variables diff --git a/terraform_provisioning/priv_network.tf b/terraform_provisioning/priv_network.tf new file mode 100644 index 00000000..c5163dab --- /dev/null +++ b/terraform_provisioning/priv_network.tf @@ -0,0 +1,37 @@ +# Define required providers +terraform { +required_version = ">= 0.14.0" + required_providers { + openstack = { + source = "terraform-provider-openstack/openstack" + version = "~> 1.53.0" + } + } +} + +provider "openstack" { + cloud = "openstack" +} + +resource "openstack_networking_network_v2" "private_network" { + name = "private_network" + admin_state_up = "true" +} + + +resource "openstack_networking_subnet_v2" "subnet" { + name = "subnet" + network_id = openstack_networking_network_v2.private_network.id + cidr = "10.0.0.0/24" + ip_version = 4 +} + +resource "openstack_networking_router_v2" "router" { + name = "router" + external_network_id = var.external_network_id +} + +resource "openstack_networking_router_interface_v2" "router_interface" { + router_id = openstack_networking_router_v2.router.id + subnet_id = openstack_networking_subnet_v2.subnet.id +} diff --git a/terraform_provisioning/variables.tf b/terraform_provisioning/variables.tf new file mode 100644 index 00000000..1076563e --- /dev/null +++ b/terraform_provisioning/variables.tf @@ -0,0 +1,4 @@ +variable "external_network_id" { + description = "The id of the external network to connect the router to" + type = string +} diff --git a/terraform_provisioning/vars.tfvars b/terraform_provisioning/vars.tfvars new file mode 100644 index 00000000..ee4bd8a6 --- /dev/null +++ b/terraform_provisioning/vars.tfvars @@ -0,0 +1 @@ +external_network_id = ""