diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 34c9e4fe574aa140b766f4c6844033df41ca4c31..1ad418c7a49b974bb6f5b72fad74407ea366404a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,7 +8,6 @@ variables: OS_AUTH_TYPE: "v3applicationcredential" OS_AUTH_URL: "https://keystone.cloud.rc.uab.edu:5000/v3" TF_ROOT: ${CI_PROJECT_DIR}/ - TF_VAR_internal_network: "xdmod-packer-clusternet" TF_VAR_external_network: "xdmod-packer-dmznet" TF_VAR_flavor: "m1.medium" GIT_SUBMODULE_STRATEGY: "recursive" @@ -46,6 +45,7 @@ tf-apply: tags: [build] script: - export BUILD_DATE=$(TZ=America/Chicago date +%Y%m%d%H%M%S) + - export TF_VAR_internal_network="xdmod-packer-clusternet-$BUILD_DATE" - | if [ -z $TF_VAR_image_ohpc ]; then diff --git a/internal-network/main.tf b/internal-network/main.tf index e2837d3bd6d7944c51f4698e3bc1585b7a667675..4b5272582f292fee1215b55eb84d03832a461d5b 100644 --- a/internal-network/main.tf +++ b/internal-network/main.tf @@ -1,4 +1,4 @@ -variable "name" {default = "cluster"} +variable "internal_net" {default = ""} variable "admin_state_up" { } variable "enable_dhcp" {} @@ -21,21 +21,21 @@ provider "openstack" { # creates clusternet resource "openstack_networking_network_v2" "internal_network" { - name = "${var.name}net" + name = var.internal_net admin_state_up = var.admin_state_up } # creates clustersubnet # cidr is the subnet range (that subnet range and dns nameservers from the network create file in feat-openstack) resource "openstack_networking_subnet_v2" "internal_subnet" { - name = "${var.name}subnet" + name = "${var.internal_net}_subnet" network_id = openstack_networking_network_v2.internal_network.id cidr = "10.1.1.0/24" ip_version = 4 enable_dhcp = var.enable_dhcp } -output "id" { +output "internal_network_id" { value = openstack_networking_network_v2.internal_network.id depends_on = [openstack_networking_subnet_v2.internal_subnet] } diff --git a/main.tf b/main.tf index 4f7148279d22f2a84de66838235906f412e3b69d..15d3d978d9af32dbf8482e0c9ee04bba6b1015d1 100644 --- a/main.tf +++ b/main.tf @@ -14,6 +14,19 @@ provider "openstack" { } } +# runs the internal-network module +module "cluster-network" { + internal_net = var.internal_network + source = "./internal-network" + # Default name var is in the module main file + admin_state_up = var.admin_state_up + enable_dhcp = var.enable_dhcp +} +# calls the outputs defined in the internal-network module +output "internal_network_id" { + value = "${module.cluster-network.internal_network_id}" +} + # runs the floating-ip module - uses public network name defined above module "floating-ip-address" { source = "./floating-ip" @@ -42,7 +55,6 @@ output "keypair_name" { } data "openstack_networking_network_v2" "external_net" {name = var.external_network} -data "openstack_networking_network_v2" "internal_net" {name = var.internal_network} # runs the ohpc-instance module - creates ohpc instance using variables defined above # calls functions from dmz-network, import-keypair, and floating-ip-address modules to get values created there for use @@ -53,7 +65,7 @@ module "create-ohpc-instance" { flavor = var.flavor key_pair = module.import-keypair.keypair_name external_network = data.openstack_networking_network_v2.external_net.id - internal_network = data.openstack_networking_network_v2.internal_net.id + internal_network = "${module.cluster-network.internal_network_id}" internal_ip = var.ohpc_private_ip floating_ip_ohpc = module.floating-ip-address.ohpc_address ohpc_user = var.ohpc_user @@ -80,12 +92,13 @@ module "create-ohpc-instance" { # runs the nodes module - creates nodes using variables defined above # calls functions from cluster-network and import-keypair modules to get values created there for use module "nodes" { + internal_subnet_id = "${module.cluster-network.internal_subnet_id}" source = "./nodes" image_compute = var.image_compute flavor = var.flavor key_pair = module.import-keypair.keypair_name compute_node_count = var.compute_node_count - internal_network = data.openstack_networking_network_v2.internal_net.id + internal_network = "${module.cluster-network.internal_network_id}" } # calls the outputs defined in the ohpc-instance module diff --git a/nodes/main.tf b/nodes/main.tf index 4d7326df068248fa991ac5e5eae70c2258d790c7..03f1d5934eea5b86c0ec7fc3f3fb6a1f74a18df0 100644 --- a/nodes/main.tf +++ b/nodes/main.tf @@ -1,3 +1,6 @@ +# is created in internal-network module and called in root module +variable "internal_subnet_id" {type = string} + variable "image_compute" {} variable "flavor" {} @@ -31,6 +34,7 @@ data "openstack_images_image_v2" "compute" { # creates compute node resource "openstack_compute_instance_v2" "compute" { + depends_on = [var.internal_subnet_id] name = "c${count.index}" image_id = data.openstack_images_image_v2.compute.id flavor_name = var.flavor