Inputs

The following input variables are supported:

active_deadline_seconds

Description: Duration in seconds relative to the workflow start time which the workflow is allowed to run before the controller terminates the Workflow

Type: number

Default: 86400

archive_logs_enabled

Description: Whether logs should be archived and made available in the Argo web UI

Type: bool

Default: true

arguments

Description: The arguments to set for the Workflow

Type:

object({
artifacts = optional(list(any), [])
parameters = optional(list(any), [])
})

Default:

{
"artifacts": [],
"parameters": []
}

arm_nodes_enabled

Description: Whether to allow Pods to schedule on arm64 nodes

Type: bool

Default: true

burstable_nodes_enabled

Description: Whether to allow Pods to schedule on burstable nodes

Type: bool

Default: false

cluster_workflow_template_ref

Description: Name is the resource name of the ClusterWorkflowTemplate template (https://argo-workflows.readthedocs.io/en/stable/cluster-workflow-templates/)

Type: string

Default: null

common_env

Description: Key pair values of the environment variables for each container

Type: map(string)

Default: {}

common_env_from_config_maps

Description: Environment variables that are sourced from existing Kubernetes ConfigMaps. The keys are the environment variables names and the values are the ConfigMap references.

Type:

map(object({
config_map_name = string
key = string
}))

Default: {}

common_env_from_secrets

Description: Environment variables that are sourced from existing Kubernetes Secrets. The keys are the environment variables names and the values are the Secret references.

Type:

map(object({
secret_name = string
key = string
}))

Default: {}

common_secrets

Description: Key pair values of secrets to add to the containers as environment variables

Type: map(string)

Default: {}

config_map_mounts

Description: A mapping of ConfigMap names to their mount configuration in the containers of the Workflow

Type:

map(object({
mount_path = string # Where in the containers to mount the ConfigMap
optional = optional(bool, false) # Whether the Pod can launch if this ConfigMap does not exist
sub_paths = optional(list(string), []) # Only mount these keys of the ConfigMap (will mount at `${mount_path}/${sub_path}`)
}))

Default: {}

controller_node_required

Description: Whether the Pods must be scheduled on a controller node

Type: bool

Default: false

default_container_image

Description: The default container image to use

Type: string

Default: "docker.io/library/busybox:1.36.1"

default_resources

Description: The default container resources to use

Type:

object({
requests = optional(object({
memory = optional(string, "100Mi")
cpu = optional(string, "50m")
}), { memory = "100Mi", cpu = "50m" })
limits = optional(object({
memory = optional(string, "100Mi")
cpu = optional(string, null)
}), { memory = "100Mi" })
})

Default:

{
"limits": {
"memory": "100Mi"
},
"requests": {
"cpu": "50m",
"memory": "100Mi"
}
}

delete_artifacts_on_deletion

Description: Change the default behavior to delete artifacts on workflow deletion

Type: bool

Default: false

disruptions_enabled

Description: Whether disruptions should be enabled for Pods in the Workflow

Type: bool

Default: false

dns_policy

Description: The DNS policy for the Pods

Type: string

Default: "ClusterFirst"

entrypoint

Description: Name of the template that will be used as the first node in this workflow

Type: string

Default: n/a

extra_aws_permissions

Description: Extra JSON-encoded AWS permissions to assign to the Workflow’s service account

Type: string

Default: "{}"

extra_labels

Description: Extra labels to assign to all resources in this workflow

Type: map(string)

Default: {}

extra_pod_annotations

Description: Annotations to add to the Pods in the Workflow

Type: map(string)

Default: {}

extra_pod_labels

Description: Extra Pod labels to use

Type: map(string)

Default: {}

extra_tolerations

Description: Extra tolerations to add to the Pods

Type:

list(object({
key = optional(string)
operator = string
value = optional(string)
effect = optional(string)
}))

Default: []

extra_workflow_labels

Description: Extra labels to add to the Workflow object

Type: map(string)

Default: {}

hooks

Description: Hooks to add to the Workflow

Type: any

Default: {}

ip_allow_list

Description: A list of IPs that can use the service account token to authenticate with AWS API

Type: list(string)

Default: []

labels_from

Description: Additional values from the spec.workflowMetadata.labelsFrom field. Will be merged with labels_from_parameters.

Type: map(string)

Default: {}

labels_from_parameters

Description: A list of parameter names that will be added as labels when the Workflow is created. The label values will be set as the parameter values.

Type: list(string)

Default: []

linux_capabilities

Description: Extra linux capabilities to add to containers by default

Type: list(string)

Default: []

mount_owner

Description: The ID of the group that owns the mounted volumes

Type: number

Default: 1000

name

Description: The name of this Workflow

Type: string

Default: n/a

namespace

Description: The namespace the cluster is in

Type: string

Default: n/a

node_preferences

Description: Node label preferences for the Pods

Type: map(object({ weight = number, operator = string, values = list(string) }))

Default: {}

node_requirements

Description: Node label requirements for the Pods

Type: map(list(string))

Default: {}

on_exit

Description: A template reference which is invoked at the end of the workflow, irrespective of the success, failure, or error of the primary template.

Type: string

Default: null

panfactum_scheduler_enabled

Description: Whether to use the Panfactum Pod scheduler with enhanced bin-packing

Type: bool

Default: true

passthrough_parameters

Description: Workflow parameters that should automatically passthrough to every template on the workflow

Type:

list(object({
default = optional(string)
description = optional(string)
enum = optional(list(string))
globalName = optional(string)
name = string
value = optional(string)
}))

Default: []

pod_delete_delay_seconds

Description: The number of seconds after Workflow completion that Pods will be deleted

Type: number

Default: 180

pod_parallelism

Description: Limits the max total parallel pods that can execute at the same time in a workflow

Type: number

Default: null

priority

Description: Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first.

Type: number

Default: null

priority_class_name

Description: The default priority class to use for Pods in the Workflow

Type: string

Default: null

privileged

Description: Whether the generated containers run with elevated privileges

Type: bool

Default: false

pull_through_cache_enabled

Description: Whether to use the ECR pull through cache for the deployed images

Type: bool

Default: true

read_only

Description: Whether the generated containers default to read-only root filesystems

Type: bool

Default: true

retry_backoff_initial_duration_seconds

Description: The initial number of seconds to wait before the next retry in an exponential backoff strategy

Type: number

Default: 30

retry_backoff_max_duration_seconds

Description: The maximum number of seconds to wait before the next retry in an exponential backoff strategy

Type: number

Default: 3600

retry_expression

Description: Expression is a condition expression for when a node will be retried. If it evaluates to false, the node will not be retried and the retry strategy will be ignored.

Type: string

Default: null

retry_max_attempts

Description: The maximum number of allowable retries

Type: number

Default: 5

retry_policy

Description: The policy that determines when the Workflow will be retried

Type: string

Default: "Always"

run_as_root

Description: Whether to enable running as root in the Pods

Type: bool

Default: false

secret_mounts

Description: A mapping of Secret names to their mount configuration in the containers of the Workflow

Type:

map(object({
mount_path = string # Where in the containers to mount the Secret
optional = optional(bool, false) # Whether the Pod can launch if this Secret does not exist
sub_paths = optional(list(string), []) # Only mount these keys of the secret (will mount at `${mount_path}/${sub_path}`)
}))

Default: {}

spot_nodes_enabled

Description: Whether to allow Pods to schedule on spot nodes

Type: bool

Default: true

suspend

Description: Whether this workflow is suspended

Type: bool

Default: false

templates

Description: A list of workflow templates. See https://argo-workflows.readthedocs.io/en/stable/fields/#template.

Type: any

Default: n/a

tmp_directories

Description: A mapping of temporary directory names (arbitrary) to their configuration

Type:

map(object({
mount_path = string # Where in the containers to mount the temporary directories
size_mb = optional(number, 100) # The number of MB to allocate for the directory
node_local = optional(bool, false) # If true, the temporary storage will come from the host node rather than a PVC
}))

Default: {}

uid

Description: The UID to use for the user in the Pods

Type: number

Default: 1000

volume_mounts

Description: A mapping of names to configuration for temporary PersistentVolumeClaims used by all Pods in the Workflow

Type:

map(object({
storage_class = optional(string, "ebs-standard")
access_modes = optional(list(string), ["ReadWriteOnce"])
size_gb = optional(number, 1) # The size of the volume in GB
mount_path = string # Where in the containers to mount the volume
}))

Default: {}

workflow_annotations

Description: Annotations to add to the Workflow object

Type: map(string)

Default: {}

workflow_delete_seconds_after_completion

Description: The number of seconds after workflow completion that the Workflow object will be deleted

Type: number

Default: 3600

workflow_delete_seconds_after_failure

Description: The number of seconds after workflow failure that the Workflow object will be deleted

Type: number

Default: 3600

workflow_delete_seconds_after_success

Description: The number of seconds after workflow success that the Workflow object will be deleted

Type: number

Default: 3600

workflow_nodes_required

Description: Whether the pods must be scheduled on nodes that can only run workflows. This may be useful to prevent disruption of long-running, non-resumable workflows.

Type: bool

Default: false

workflow_parallelism

Description: Number of concurrent instances of this Workflow allowed to be running at any given time

Type: number

Default: 1

Outputs

The following outputs are exported:

affinity

Description: The affinity added to each Pod by default

arguments

Description: The arguments to the workflow

aws_role_arn

Description: The name of the AWS role used by the Workflow’s Service Account

aws_role_name

Description: The name of the AWS role used by the Workflow’s Service Account

container_defaults

Description: Default options for every container spec

container_security_context

Description: The security context to be applied to each container in each Pod generated by this Workflow

env

Description: The environment variables to be added to each container in each Pod generated by this Workflow

generate_name

Description: The prefix for generating Workflow names from this spec

labels

Description: The default labels assigned to all resources in this Workflow

match_labels

Description: The labels unique to this deployment that can be used to select the Pods in this Workflow

name

Description: The non-prefix name of the Workflow spec (should be used for naming derived resources like WorkflowTemplates)

service_account_name

Description: The default service account used for the Pods

template_parameters

Description: The default parameters set on each template

tolerations

Description: Tolerations added to each Pod by default

volume_mounts

Description: The volume mounts to be applied to the main container in each Pod generated by this Workflow

volumes

Description: The volume specification to be applied to all pods generated by this Workflow

workflow_spec

Description: The specification for the Workflow

Providers

The following providers are needed by this module: