job "${job_name}" { # 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. For a full list of job types and their differences, # please see the online documentation. # # https://www.nomadproject.io/docs/jobspec/schedulers # type = "${type}" # The periodic stanza allows a job to run at fixed times, dates, or intervals. # The easiest way to think about the periodic scheduler is "Nomad cron" or # "distributed cron". # # https://www.nomadproject.io/docs/job-specification/periodic # periodic { cron = "${cron}" prohibit_overlap = "${prohibit_overlap}" time_zone = "${time_zone}" } # 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. # # https://www.nomadproject.io/docs/job-specification/group # group "${job_name}-master" { # The restart stanza configures a tasks's behavior on task failure. Restarts # happen on the client that is running the task. # # https://www.nomadproject.io/docs/job-specification/restart # restart { mode = "fail" } # The constraint allows restricting the set of eligible nodes. Constraints # may filter on attributes or client metadata. # # For more information and examples on the "volume" stanza, please see # the online documentation at: # # https://www.nomadproject.io/docs/job-specification/constraint # constraint { attribute = "$${attr.cpu.arch}" operator = "!=" value = "arm64" } constraint { attribute = "$${node.class}" value = "builder" } # The "task" stanza creates an individual unit of work, such as a Docker # container, web application, or batch processing. # # https://www.nomadproject.io/docs/job-specification/task.html # task "${job_name}-trending" { # The artifact stanza instructs Nomad to fetch and unpack a remote # resource, such as a file, tarball, or binary. # # https://www.nomadproject.io/docs/job-specification/artifact # artifact { source = "git::https://github.com/FDio/csit" destination = "local/csit" } # 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 = "${image}" command = "gluesparksubmit" args = [ "--driver-memory", "20g", "--executor-memory", "20g", "trending.py" ] work_dir = "/local/csit/csit.infra.etl" } # The env stanza configures a list of environment variables to populate # the task's environment before starting. env { AWS_ACCESS_KEY_ID = "${aws_access_key_id}" AWS_SECRET_ACCESS_KEY = "${aws_secret_access_key}" AWS_DEFAULT_REGION = "${aws_default_region}" OUT_AWS_ACCESS_KEY_ID = "${out_aws_access_key_id}" OUT_AWS_SECRET_ACCESS_KEY = "${out_aws_secret_access_key}" OUT_AWS_DEFAULT_REGION = "${out_aws_default_region}" ${ envs } } # 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. # # https://www.nomadproject.io/docs/job-specification/resources # resources { cpu = ${cpu} memory = ${memory} } } task "${job_name}-stats" { # The artifact stanza instructs Nomad to fetch and unpack a remote # resource, such as a file, tarball, or binary. # # https://www.nomadproject.io/docs/job-specification/artifact # artifact { source = "git::https://github.com/FDio/csit" destination = "local/csit" } # 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 = "${image}" command = "gluesparksubmit" args = [ "--driver-memory", "10g", "--executor-memory", "10g", "stats.py" ] work_dir = "/local/csit/csit.infra.etl" } # The env stanza configures a list of environment variables to populate # the task's environment before starting. env { AWS_ACCESS_KEY_ID = "${aws_access_key_id}" AWS_SECRET_ACCESS_KEY = "${aws_secret_access_key}" AWS_DEFAULT_REGION = "${aws_default_region}" OUT_AWS_ACCESS_KEY_ID = "${out_aws_access_key_id}" OUT_AWS_SECRET_ACCESS_KEY = "${out_aws_secret_access_key}" OUT_AWS_DEFAULT_REGION = "${out_aws_default_region}" ${ envs } } # 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. # # https://www.nomadproject.io/docs/job-specification/resources # resources { cpu = ${cpu} memory = ${memory} } } } # group "${job_name}-rls2202" { # # The restart stanza configures a tasks's behavior on task failure. Restarts # # happen on the client that is running the task. # # # # https://www.nomadproject.io/docs/job-specification/restart # # # restart { # mode = "fail" # } # # # The constraint allows restricting the set of eligible nodes. Constraints # # may filter on attributes or client metadata. # # # # For more information and examples on the "volume" stanza, please see # # the online documentation at: # # # # https://www.nomadproject.io/docs/job-specification/constraint # # # constraint { # attribute = "$${attr.cpu.arch}" # operator = "!=" # value = "arm64" # } # # constraint { # attribute = "$${node.class}" # value = "builder" # } # # # The "task" stanza creates an individual unit of work, such as a Docker # # container, web application, or batch processing. # # # # https://www.nomadproject.io/docs/job-specification/task.html # # # task "${job_name}-coverage" { # # The artifact stanza instructs Nomad to fetch and unpack a remote # # resource, such as a file, tarball, or binary. # # # # https://www.nomadproject.io/docs/job-specification/artifact # # # artifact { # source = "git::https://github.com/FDio/csit" # destination = "local/csit" # } # # # 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 = "${image}" # command = "gluesparksubmit" # args = [ # "--driver-memory", "20g", # "--executor-memory", "20g", # "coverage_rls2202.py" # ] # work_dir = "/local/csit/csit.infra.etl" # } # # # The env stanza configures a list of environment variables to populate # # the task's environment before starting. # env { # AWS_ACCESS_KEY_ID = "${aws_access_key_id}" # AWS_SECRET_ACCESS_KEY = "${aws_secret_access_key}" # AWS_DEFAULT_REGION = "${aws_default_region}" # OUT_AWS_ACCESS_KEY_ID = "${out_aws_access_key_id}" # OUT_AWS_SECRET_ACCESS_KEY = "${out_aws_secret_access_key}" # OUT_AWS_DEFAULT_REGION = "${out_aws_default_region}" # ${ envs } # } # # # 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. # # # # https://www.nomadproject.io/docs/job-specification/resources # # # resources { # cpu = ${cpu} # memory = ${memory} # } # } # task "${job_name}-iterative" { # # The artifact stanza instructs Nomad to fetch and unpack a remote # # resource, such as a file, tarball, or binary. # # # # https://www.nomadproject.io/docs/job-specification/artifact # # # artifact { # source = "git::https://github.com/FDio/csit" # destination = "local/csit" # } # # # 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 = "${image}" # command = "gluesparksubmit" # args = [ # "--driver-memory", "20g", # "--executor-memory", "20g", # "iterative_rls2202.py" # ] # work_dir = "/local/csit/csit.infra.etl" # } # # # The env stanza configures a list of environment variables to populate # # the task's environment before starting. # env { # AWS_ACCESS_KEY_ID = "${aws_access_key_id}" # AWS_SECRET_ACCESS_KEY = "${aws_secret_access_key}" # AWS_DEFAULT_REGION = "${aws_default_region}" # OUT_AWS_ACCESS_KEY_ID = "${out_aws_access_key_id}" # OUT_AWS_SECRET_ACCESS_KEY = "${out_aws_secret_access_key}" # OUT_AWS_DEFAULT_REGION = "${out_aws_default_region}" # ${ envs } # } # # # 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. # # # # https://www.nomadproject.io/docs/job-specification/resources # # # resources { # cpu = ${cpu} # memory = ${memory} # } # } # } }