From 2afd8f4fe26ae1f1d183ecac8f9daa85f68bc634 Mon Sep 17 00:00:00 2001 From: pmikus Date: Thu, 28 Jan 2021 08:24:35 +0000 Subject: Infra: Terraform vpp_device module + Convert to module + Fix memory limit Signed-off-by: pmikus Change-Id: I95285faabbf7bad7fcb7f3b0c9b4e79641c6b95c --- .../1n_nmd/vpp_device/conf/nomad/csit_shim.hcl | 169 ++++++++++++++++++++ terraform-ci-infra/1n_nmd/vpp_device/main.tf | 19 +++ .../1n_nmd/vpp_device/prod_csit_shim.nomad | 171 --------------------- terraform-ci-infra/1n_nmd/vpp_device/resources.tf | 4 - terraform-ci-infra/1n_nmd/vpp_device/variables.tf | 31 ++++ 5 files changed, 219 insertions(+), 175 deletions(-) create mode 100644 terraform-ci-infra/1n_nmd/vpp_device/conf/nomad/csit_shim.hcl create mode 100644 terraform-ci-infra/1n_nmd/vpp_device/main.tf delete mode 100644 terraform-ci-infra/1n_nmd/vpp_device/prod_csit_shim.nomad delete mode 100644 terraform-ci-infra/1n_nmd/vpp_device/resources.tf create mode 100644 terraform-ci-infra/1n_nmd/vpp_device/variables.tf (limited to 'terraform-ci-infra') 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/prod_csit_shim.nomad b/terraform-ci-infra/1n_nmd/vpp_device/prod_csit_shim.nomad deleted file mode 100644 index 328f503a0b..0000000000 --- a/terraform-ci-infra/1n_nmd/vpp_device/prod_csit_shim.nomad +++ /dev/null @@ -1,171 +0,0 @@ -job "prod-csit-shim" { - # 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" ] - - # 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 = 1 - - 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 = 100 - memory = 128 - network { - mbits = 10 - 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 = 1 - - 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 = 100 - memory = 128 - network { - mbits = 10 - port "ssh" { - static = 6022 - } - port "ssh2" { - static = 6023 - } - } - } - } - } -} \ 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 index dace9094f2..0000000000 --- a/terraform-ci-infra/1n_nmd/vpp_device/resources.tf +++ /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 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 -- cgit 1.2.3-korg