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:
kubectl (2.1.6)
kubernetes (2.35.0)
pf (0.0.7)
random (3.8.1)