aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpmikus <pmikus@cisco.com>2021-01-28 08:24:35 +0000
committerPeter Mikus <pmikus@cisco.com>2021-01-28 08:28:52 +0000
commit7a760c915e1d905f6cc0b2ef99ad293e3e5e290d (patch)
tree3334c30bb39053944e556eafdcbe0c93e7fff66d
parent66946b2e17f15f09f03f2c1e646aa8fc844d614b (diff)
Infra: Terraform vpp_device module
+ Convert to module + Fix memory limit Signed-off-by: pmikus <pmikus@cisco.com> Change-Id: I95285faabbf7bad7fcb7f3b0c9b4e79641c6b95c (cherry picked from commit 2afd8f4fe26ae1f1d183ecac8f9daa85f68bc634) (cherry picked from commit 7c90b6a0f1d0e14f64364d0213e473d447980d05)
-rw-r--r--terraform-ci-infra/1n_nmd/vpp_device/conf/nomad/csit_shim.hcl169
-rw-r--r--terraform-ci-infra/1n_nmd/vpp_device/main.tf19
-rw-r--r--terraform-ci-infra/1n_nmd/vpp_device/variables.tf31
3 files changed, 219 insertions, 0 deletions
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
index 0000000000..cf065429d1
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/vpp_device/conf/nomad/csit_shim.hcl
@@ -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
index 0000000000..c4a3e27970
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/vpp_device/main.tf
@@ -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
index 0000000000..ca574e770a
--- /dev/null
+++ b/terraform-ci-infra/1n_nmd/vpp_device/variables.tf
@@ -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