Skip to content
Snippets Groups Projects
main.tf 2.65 KiB
Newer Older
# is created in external-network module and called in root module
terraform {
required_version = ">= 0.14.0"
  required_providers {
    openstack = {
      source  = "terraform-provider-openstack/openstack"
      version = "~> 1.42.0"
    }
  }
}

Ryan Randles Jones's avatar
Ryan Randles Jones committed
variable "ohpc_instance_name" {}
variable "image_ohpc" {}
variable "flavor" {}
Ryan Randles Jones's avatar
Ryan Randles Jones committed

# is created in key-pair module and called in root module
variable "key_pair" {type = string}
variable "internal_network" {}
variable "internal_ip" {}
variable "external_network" {}
Ryan Randles Jones's avatar
Ryan Randles Jones committed

# is created in floating-ip module and called in root module
variable "floating_ip_ohpc" {type = string}
Ryan Randles Jones's avatar
Ryan Randles Jones committed
variable "ohpc_user" {}
variable "ssh_private_key" {}
variable "vol_ids" {
  type    = list(string)
  default = []
}

# creates details for the OHPC instance
resource "openstack_compute_instance_v2" "ohpc" {
  name            = var.ohpc_instance_name
  image_name      = var.image_ohpc
  flavor_name     = var.flavor
Ryan Randles Jones's avatar
Ryan Randles Jones committed
  key_pair        = var.key_pair
  security_groups = ["default"]
    write_files:
    - content: |
        10.1.1.10 ohpc ohpc.novalocal
        owner: centos:centos
        path: /etc/hosts
        permissions: '0644'

      runcmd:
      - |
          #!/bin/bash
          sudo mkdir -p /data/xdmod/queues
Krish Moodbidri's avatar
Krish Moodbidri committed
          sudo mount /dev/vdb1 /var/lib/mysql
          sudo mount /dev/vdc1 /data/xdmod/queues
          sudo df -h
          sudo systemctl restart mariadb
          sudo sed -i -E 's/xdmod..nip.io/xdmod.rc.uab.edu/g' /etc/httpd/conf.d/xdmod.conf
          sudo sed -i -E 's/xdmod..nip.io/xdmod.rc.uab.edu/g' /etc/xdmod/simplesamlphp/config/config.php
          sudo systemctl restart httpd

# defines the networks of the instance
  network {
    uuid = var.external_network
    uuid = var.internal_network
    fixed_ip_v4 = var.internal_ip
  }
}

# associates floating ip with the OHPC instance
resource "openstack_compute_floatingip_associate_v2" "ohpc" {
  floating_ip = var.floating_ip_ohpc
  instance_id = openstack_compute_instance_v2.ohpc.id
Krish Moodbidri's avatar
Krish Moodbidri committed
# Attach specific volumes
resource "openstack_compute_volume_attach_v2" "attach_prod_volume" {
  instance_id = openstack_compute_instance_v2.ohpc.id
  volume_id   = data_volume
Krish Moodbidri's avatar
Krish Moodbidri committed
resource "openstack_compute_volume_attach_v2" "attach_prod_queue_volume" {
  instance_id = openstack_compute_instance_v2.ohpc.id
  volume_id   = prod_volume_id
output "xdmod_instance_id" {
  value = openstack_compute_instance_v2.ohpc.id
output "ssh_host" {
    value = var.floating_ip_ohpc
Krish Moodbidri's avatar
Krish Moodbidri committed
    openstack_compute_volume_attach_v2.attach_prod_volume.device,
    openstack_compute_volume_attach_v2.attach_prod_queue_volume.device