aboutsummaryrefslogtreecommitdiffstats
path: root/openlab/modules/openstack/compute
diff options
context:
space:
mode:
authoryoonsoonjahng <yoonsoon.jahng@yoppworks.com>2020-09-02 13:06:34 -0400
committeryoonsoonjahng <yoonsoon.jahng@yoppworks.com>2020-09-09 21:07:31 -0400
commitbc47c630d9fdc0e0e75b64a0c3d2311df28cfeaa (patch)
tree23f97a308af22389a46534dba2328e3d4e52e3e0 /openlab/modules/openstack/compute
parente291bec2483388ff1b6f2552dd894d7092823a06 (diff)
added initial files
Issue-ID: INT-1698 Change-Id: I3405a7815bc51dbdf2cb61cd2003d46f428f059c Signed-off-by: yoonsoonjahng <yoonsoon.jahng@yoppworks.com>
Diffstat (limited to 'openlab/modules/openstack/compute')
-rw-r--r--openlab/modules/openstack/compute/data.tf36
-rw-r--r--openlab/modules/openstack/compute/main.tf27
-rw-r--r--openlab/modules/openstack/compute/output.tf11
-rw-r--r--openlab/modules/openstack/compute/variables.tf18
4 files changed, 92 insertions, 0 deletions
diff --git a/openlab/modules/openstack/compute/data.tf b/openlab/modules/openstack/compute/data.tf
new file mode 100644
index 0000000..24c6c62
--- /dev/null
+++ b/openlab/modules/openstack/compute/data.tf
@@ -0,0 +1,36 @@
+data "terraform_remote_state" "keypair" {
+ backend = var.backend
+ config = {
+ bucket = var.backend_state
+ prefix = "${var.region}/${var.environment}/keypair/terraform.tfstate"
+ }
+}
+
+data "terraform_remote_state" "network" {
+ backend = var.backend
+ config = {
+ bucket = var.backend_state
+ prefix = "${var.region}/${var.environment}/network/terraform.tfstate"
+ }
+}
+
+data "terraform_remote_state" "securitygroup" {
+ backend = var.backend
+ config = {
+ bucket = var.backend_state
+ prefix = "${var.region}/${var.environment}/securitygroup/terraform.tfstate"
+ }
+}
+
+data "openstack_images_image_v2" "vm_image" {
+ name = var.image
+}
+
+data "openstack_compute_flavor_v2" "flavor" {
+ name = var.flavor
+}
+
+data "openstack_networking_network_v2" "egress_network" {
+ name = var.network
+}
+
diff --git a/openlab/modules/openstack/compute/main.tf b/openlab/modules/openstack/compute/main.tf
new file mode 100644
index 0000000..1e08737
--- /dev/null
+++ b/openlab/modules/openstack/compute/main.tf
@@ -0,0 +1,27 @@
+resource "openstack_compute_instance_v2" "nodes" {
+ name = "${var.cluster_name}-${var.node_name}-${count.index}"
+ image_id = data.openstack_images_image_v2.vm_image.id
+ flavor_id = data.openstack_compute_flavor_v2.flavor.id
+ key_pair = data.terraform_remote_state.keypair.outputs.name
+ network {
+ name = data.terraform_remote_state.network.outputs.name
+ }
+ security_groups = [ data.terraform_remote_state.securitygroup.outputs.name ]
+
+ user_data = var.user_data
+
+ count = var.node_count
+}
+
+resource "openstack_compute_floatingip_v2" "floatingip" {
+ pool = var.floating_ip_pool
+
+ count = var.node_count
+}
+
+resource "openstack_compute_floatingip_associate_v2" "floatipassociation" {
+ floating_ip = openstack_compute_floatingip_v2.floatingip[count.index].address
+ instance_id = openstack_compute_instance_v2.nodes[count.index].id
+
+ count = var.node_count
+}
diff --git a/openlab/modules/openstack/compute/output.tf b/openlab/modules/openstack/compute/output.tf
new file mode 100644
index 0000000..28ae6d0
--- /dev/null
+++ b/openlab/modules/openstack/compute/output.tf
@@ -0,0 +1,11 @@
+output "floating_ips" {
+ value = [openstack_compute_floatingip_associate_v2.floatipassociation.*.floating_ip]
+}
+
+output "fixed_ips" {
+ value = [openstack_compute_instance_v2.nodes.*.access_ip_v4]
+}
+
+output "hostnames" {
+ value = [openstack_compute_instance_v2.nodes.*.name]
+} \ No newline at end of file
diff --git a/openlab/modules/openstack/compute/variables.tf b/openlab/modules/openstack/compute/variables.tf
new file mode 100644
index 0000000..871719d
--- /dev/null
+++ b/openlab/modules/openstack/compute/variables.tf
@@ -0,0 +1,18 @@
+variable "cluster_name" {
+ description = "A name for the cluster"
+ type = string
+}
+
+variable "backend" {}
+variable "backend_state" {}
+variable "region" {}
+variable "environment" {}
+
+variable "node_name" {}
+variable "image" {}
+variable "flavor" {}
+variable "network" {}
+variable "floating_ip_pool" {}
+variable "user_data" {}
+
+variable "node_count" {}