Infra: Terraform vpp_device module 65/30965/1
authorpmikus <pmikus@cisco.com>
Thu, 28 Jan 2021 08:24:35 +0000 (08:24 +0000)
committerpmikus <pmikus@cisco.com>
Thu, 28 Jan 2021 08:24:35 +0000 (08:24 +0000)
+ Convert to module
+ Fix memory limit

Signed-off-by: pmikus <pmikus@cisco.com>
Change-Id: I95285faabbf7bad7fcb7f3b0c9b4e79641c6b95c

terraform-ci-infra/1n_nmd/vpp_device/conf/nomad/csit_shim.hcl [moved from terraform-ci-infra/1n_nmd/vpp_device/prod_csit_shim.nomad with 88% similarity]
terraform-ci-infra/1n_nmd/vpp_device/main.tf [new file with mode: 0644]
terraform-ci-infra/1n_nmd/vpp_device/resources.tf [deleted file]
terraform-ci-infra/1n_nmd/vpp_device/variables.tf [new file with mode: 0644]

@@ -1,11 +1,11 @@
-job "prod-csit-shim" {
+job "${job_name}" {
   # The "region" parameter specifies the region in which to execute the job.
   # If omitted, this inherits the default region name of "global".
   # region = "global"
   #
   # The "datacenters" parameter specifies the list of datacenters which should
   # be considered when placing this task. This must be provided.
-  datacenters = [ "yul1" ]
+  datacenters = "${datacenters}"
 
   # The "type" parameter controls the type of job, which impacts the scheduler's
   # decision on placement. This configuration is optional and defaults to
@@ -16,7 +16,7 @@ job "prod-csit-shim" {
   #
   #     https://www.nomadproject.io/docs/jobspec/schedulers.html
   #
-  type = "system"
+  type        = "system"
 
   # The "group" stanza defines a series of tasks that should be co-located on
   # the same Nomad client. Any task within a group will be placed on the same
@@ -31,18 +31,18 @@ job "prod-csit-shim" {
     # The "count" parameter specifies the number of the task groups that should
     # be running under this group. This value must be non-negative and defaults
     # to 1.
-    count       = 1
+    count            = ${group_count}
 
     constraint {
-      attribute = "${node.class}"
-      value     = "csit"
+      attribute      = "$${node.class}"
+      value          = "csit"
     }
 
     restart {
-      interval  = "1m"
-      attempts  = 3
-      delay     = "15s"
-      mode      = "delay"
+      interval       = "1m"
+      attempts       = 3
+      delay          = "15s"
+      mode           = "delay"
     }
 
     # The "task" stanza creates an individual unit of work, such as a Docker
@@ -83,10 +83,9 @@ job "prod-csit-shim" {
       #     https://www.nomadproject.io/docs/job-specification/resources.html
       #
       resources {
-        cpu          = 100
-        memory       = 128
+        cpu          = ${cpu}
+        memory       = ${mem}
         network {
-          mbits      = 10
           port "ssh" {
               static = 6022
           }
@@ -102,18 +101,18 @@ job "prod-csit-shim" {
     # The "count" parameter specifies the number of the task groups that should
     # be running under this group. This value must be non-negative and defaults
     # to 1.
-    count       = 1
+    count            = ${group_count}
 
     constraint {
-      attribute = "${node.class}"
-      value     = "csitarm"
+      attribute      = "$${node.class}"
+      value          = "csitarm"
     }
 
     restart {
-      interval = "1m"
-      attempts = 3
-      delay    = "15s"
-      mode     = "delay"
+      interval       = "1m"
+      attempts       = 3
+      delay          = "15s"
+      mode           = "delay"
     }
 
     # The "task" stanza creates an individual unit of work, such as a Docker
@@ -154,10 +153,9 @@ job "prod-csit-shim" {
       #     https://www.nomadproject.io/docs/job-specification/resources.html
       #
       resources {
-        cpu          = 100
-        memory       = 128
+        cpu          = ${cpu}
+        memory       = ${mem}
         network {
-          mbits      = 10
           port "ssh" {
               static = 6022
           }
diff --git a/terraform-ci-infra/1n_nmd/vpp_device/main.tf b/terraform-ci-infra/1n_nmd/vpp_device/main.tf
new file mode 100644 (file)
index 0000000..c4a3e27
--- /dev/null
@@ -0,0 +1,19 @@
+locals {
+  datacenters = join(",", var.nomad_datacenters)
+}
+
+data "template_file" "nomad_job_csit_shim" {
+  template    = file("${path.module}/conf/nomad/csit_shim.hcl")
+  vars        = {
+    datacenters = local.datacenters
+    job_name    = var.csit_shim_job_name
+    group_count = var.csit_shim_group_count
+    cpu         = var.csit_shim_cpu
+    mem         = var.csit_shim_mem
+  }
+}
+
+resource "nomad_job" "nomad_job_csit_shim" {
+  jobspec     = data.template_file.nomad_job_csit_shim.rendered
+  detach      = false
+}
\ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/vpp_device/resources.tf b/terraform-ci-infra/1n_nmd/vpp_device/resources.tf
deleted file mode 100644 (file)
index dace909..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-resource "nomad_job" "prod_csit_shim" {
-  provider = nomad
-  jobspec  = file("${path.module}/prod_csit_shim.nomad")
-}
\ No newline at end of file
diff --git a/terraform-ci-infra/1n_nmd/vpp_device/variables.tf b/terraform-ci-infra/1n_nmd/vpp_device/variables.tf
new file mode 100644 (file)
index 0000000..ca574e7
--- /dev/null
@@ -0,0 +1,31 @@
+# Nomad
+variable "nomad_datacenters" {
+  description = "Nomad data centers"
+  type        = list(string)
+  default     = [ "dc1" ]
+}
+
+# CSIT SHIM
+variable "csit_shim_job_name" {
+  description = "CSIT SHIM job name"
+  type        = string
+  default     = "prod-csit-shim"
+}
+
+variable "csit_shim_group_count" {
+  description = "Number of CSIT SHIM group instances"
+  type        = number
+  default     = 1
+}
+
+variable "csit_shim_cpu" {
+  description = "CSIT SHIM task CPU"
+  type        = number
+  default     = 2000
+}
+
+variable "csit_shim_mem" {
+  description = "CSIT SHIM task memory"
+  type        = number
+  default     = 10000
+}
\ No newline at end of file