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

Signed-off-by: pmikus <pmikus@cisco.com>
Change-Id: I95285faabbf7bad7fcb7f3b0c9b4e79641c6b95c
(cherry picked from commit 2afd8f4fe26ae1f1d183ecac8f9daa85f68bc634)

terraform-ci-infra/1n_nmd/vpp_device/conf/nomad/csit_shim.hcl [new file with mode: 0644]
terraform-ci-infra/1n_nmd/vpp_device/main.tf [new file with mode: 0644]
terraform-ci-infra/1n_nmd/vpp_device/variables.tf [new file with mode: 0644]

diff --git a/terraform-ci-infra/1n_nmd/vpp_device/conf/nomad/csit_shim.hcl b/terraform-ci-infra/1n_nmd/vpp_device/conf/nomad/csit_shim.hcl
new file mode 100644 (file)
index 0000000..cf06542
--- /dev/null
@@ -0,0 +1,169 @@
+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 = "${datacenters}"
+
+  # The "type" parameter controls the type of job, which impacts the scheduler's
+  # decision on placement. This configuration is optional and defaults to
+  # "service". For a full list of job types and their differences, please see
+  # the online documentation.
+  #
+  # For more information, please see the online documentation at:
+  #
+  #     https://www.nomadproject.io/docs/jobspec/schedulers.html
+  #
+  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
+  # client.
+  #
+  # For more information and examples on the "group" stanza, please see
+  # the online documentation at:
+  #
+  #     https://www.nomadproject.io/docs/job-specification/group.html
+  #
+  group "prod-group1-csit-shim-amd" {
+    # 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            = ${group_count}
+
+    constraint {
+      attribute      = "$${node.class}"
+      value          = "csit"
+    }
+
+    restart {
+      interval       = "1m"
+      attempts       = 3
+      delay          = "15s"
+      mode           = "delay"
+    }
+
+    # The "task" stanza creates an individual unit of work, such as a Docker
+    # container, web application, or batch processing.
+    #
+    # For more information and examples on the "task" stanza, please see
+    # the online documentation at:
+    #
+    #     https://www.nomadproject.io/docs/job-specification/task.html
+    #
+    task "prod-task1-csit-shim-amd" {
+      # The "driver" parameter specifies the task driver that should be used to
+      # run the task.
+      driver         = "docker"
+
+      # The "config" stanza specifies the driver configuration, which is passed
+      # directly to the driver to start the task. The details of configurations
+      # are specific to each driver, so please see specific driver
+      # documentation for more information.
+      config {
+        image        = "csit_shim-ubuntu1804:local"
+        network_mode = "host"
+        pid_mode     = "host"
+        volumes      = [
+          "/var/run/docker.sock:/var/run/docker.sock"
+        ]
+        privileged   = true
+      }
+
+      # The "resources" stanza describes the requirements a task needs to
+      # execute. Resource requirements include memory, network, cpu, and more.
+      # This ensures the task will execute on a machine that contains enough
+      # resource capacity.
+      #
+      # For more information and examples on the "resources" stanza, please see
+      # the online documentation at:
+      #
+      #     https://www.nomadproject.io/docs/job-specification/resources.html
+      #
+      resources {
+        cpu          = ${cpu}
+        memory       = ${mem}
+        network {
+          port "ssh" {
+              static = 6022
+          }
+          port "ssh2" {
+              static = 6023
+          }
+        }
+      }
+    }
+  }
+
+  group "prod-group1-csit-shim-arm" {
+    # 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            = ${group_count}
+
+    constraint {
+      attribute      = "$${node.class}"
+      value          = "csitarm"
+    }
+
+    restart {
+      interval       = "1m"
+      attempts       = 3
+      delay          = "15s"
+      mode           = "delay"
+    }
+
+    # The "task" stanza creates an individual unit of work, such as a Docker
+    # container, web application, or batch processing.
+    #
+    # For more information and examples on the "task" stanza, please see
+    # the online documentation at:
+    #
+    #     https://www.nomadproject.io/docs/job-specification/task.html
+    #
+    task "prod-task1-csit-shim-arm" {
+      # The "driver" parameter specifies the task driver that should be used to
+      # run the task.
+      driver         = "docker"
+
+      # The "config" stanza specifies the driver configuration, which is passed
+      # directly to the driver to start the task. The details of configurations
+      # are specific to each driver, so please see specific driver
+      # documentation for more information.
+      config {
+        image        = "csit_shim-ubuntu1804:local"
+        network_mode = "host"
+        pid_mode     = "host"
+        volumes      = [
+          "/var/run/docker.sock:/var/run/docker.sock"
+        ]
+        privileged   = true
+      }
+
+      # The "resources" stanza describes the requirements a task needs to
+      # execute. Resource requirements include memory, network, cpu, and more.
+      # This ensures the task will execute on a machine that contains enough
+      # resource capacity.
+      #
+      # For more information and examples on the "resources" stanza, please see
+      # the online documentation at:
+      #
+      #     https://www.nomadproject.io/docs/job-specification/resources.html
+      #
+      resources {
+        cpu          = ${cpu}
+        memory       = ${mem}
+        network {
+          port "ssh" {
+              static = 6022
+          }
+          port "ssh2" {
+              static = 6023
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
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/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