Repository navigation
Restore fixed runner sizing to unblock module publication - #267
Merged
Merged
Conversation
Co-Authored-By: brandon <brandon@flightcontrol.dev>
Contributor
Author
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
Ravion Module Publish PlanDry run only. No Ravion API mutations were made.
Diffsrvn-ecs-nlb 2.5.0 -> 2.6.0--- remote
+++ compiled
placeholder: sha256:... or latest or <run-id>-railpack
required: true
type: string
+ - description: Plain environment variables to set for this deploy. Only names listed in the module's Deploy-provided environment variables input are applied; others are ignored. Can't replace a runtime variable or secret.
+ id: environment_variables
+ label: Environment variables
+ placeholder: |-
+ - name: LOG_LEVEL
+ value: info
+ required: false
+ type: array
post_deploy: '<< module.input.post_deploy_enabled && len(module.input.post_deploy_command) > 0 ? {"container_overrides": [{"name": stack.output.container_name, "command": module.input.post_deploy_command, "environment": module.input.post_deploy_environment_variables, "cpu": (module.input.post_deploy_cpu ? int(float(module.input.post_deploy_cpu) * 1024) : nil), "memory": (module.input.post_deploy_memory ? int(float(module.input.post_deploy_memory) * 1024) : nil)}], "cpu": string(module.input.post_deploy_cpu ? int(float(module.input.post_deploy_cpu) * 1024) : (module.input.capacity_provider == "ec2" ? int(float(module.input.task_cpu) * 1024) : int(float(module.input.fargate_size.vcpu) * 1024))), "memory": string(module.input.post_deploy_memory ? int(float(module.input.post_deploy_memory) * 1024) : (module.input.capacity_provider == "ec2" ? int(float(module.input.task_memory) * 1024) : int(float(module.input.fargate_size.memory_gb) * 1024))), "ephemeral_storage": (module.input.post_deploy_ephemeral_storage_size_gib ? {size_in_gib: module.input.post_deploy_ephemeral_storage_size_gib} : nil), "task_role_arn": stack.output.task_role_arn, "execution_role_arn": stack.output.execution_role_arn, "capacity_provider_strategy": (get(module.input.advanced_terraform_variables, "capacity_provider_strategies") != nil ? get(module.input.advanced_terraform_variables, "capacity_provider_strategies") : ((module.input.capacity_provider == "fargate" || module.input.additional_fargate_capacity_enabled ? [{capacity_provider: module.input.fargate_capacity_provider_name, weight: 1, base: 0}] : []) | concat(module.input.capacity_provider == "fargate_spot" || module.input.additional_fargate_spot_capacity_enabled ? [{capacity_provider: module.input.fargate_spot_capacity_provider_name, weight: 1, base: 0}] : []) | concat(module.input.capacity_provider == "ec2" || module.input.additional_ec2_capacity_enabled ? [{capacity_provider: module.input.ec2_capacity_provider_name, weight: 1, base: 0}] : []))), "network_configuration": {"awsvpc_configuration": {"subnets": (module.input.private_subnet_placement_enabled ? module.input.private_subnet_ids : module.input.public_subnet_ids), "security_groups": ([stack.output.security_group_id] | concat(module.input.security_group_ids != nil ? module.input.security_group_ids : [])), "assign_public_ip": (module.input.private_subnet_placement_enabled ? "DISABLED" : "ENABLED")}}, "enable_execute_command": module.input.execute_command_enabled, "timeout": module.input.post_deploy_timeout} : nil >>'
pre_deploy: '<< module.input.pre_deploy_enabled && len(module.input.pre_deploy_command) > 0 ? {"container_overrides": [{"name": stack.output.container_name, "command": module.input.pre_deploy_command, "environment": module.input.pre_deploy_environment_variables, "cpu": (module.input.pre_deploy_cpu ? int(float(module.input.pre_deploy_cpu) * 1024) : nil), "memory": (module.input.pre_deploy_memory ? int(float(module.input.pre_deploy_memory) * 1024) : nil)}], "cpu": string(module.input.pre_deploy_cpu ? int(float(module.input.pre_deploy_cpu) * 1024) : (module.input.capacity_provider == "ec2" ? int(float(module.input.task_cpu) * 1024) : int(float(module.input.fargate_size.vcpu) * 1024))), "memory": string(module.input.pre_deploy_memory ? int(float(module.input.pre_deploy_memory) * 1024) : (module.input.capacity_provider == "ec2" ? int(float(module.input.task_memory) * 1024) : int(float(module.input.fargate_size.memory_gb) * 1024))), "ephemeral_storage": (module.input.pre_deploy_ephemeral_storage_size_gib ? {size_in_gib: module.input.pre_deploy_ephemeral_storage_size_gib} : nil), "task_role_arn": stack.output.task_role_arn, "execution_role_arn": stack.output.execution_role_arn, "capacity_provider_strategy": (get(module.input.advanced_terraform_variables, "capacity_provider_strategies") != nil ? get(module.input.advanced_terraform_variables, "capacity_provider_strategies") : ((module.input.capacity_provider == "fargate" || module.input.additional_fargate_capacity_enabled ? [{capacity_provider: module.input.fargate_capacity_provider_name, weight: 1, base: 0}] : []) | concat(module.input.capacity_provider == "fargate_spot" || module.input.additional_fargate_spot_capacity_enabled ? [{capacity_provider: module.input.fargate_spot_capacity_provider_name, weight: 1, base: 0}] : []) | concat(module.input.capacity_provider == "ec2" || module.input.additional_ec2_capacity_enabled ? [{capacity_provider: module.input.ec2_capacity_provider_name, weight: 1, base: 0}] : []))), "network_configuration": {"awsvpc_configuration": {"subnets": (module.input.private_subnet_placement_enabled ? module.input.private_subnet_ids : module.input.public_subnet_ids), "security_groups": ([stack.output.security_group_id] | concat(module.input.security_group_ids != nil ? module.input.security_group_ids : [])), "assign_public_ip": (module.input.private_subnet_placement_enabled ? "DISABLED" : "ENABLED")}}, "enable_execute_command": module.input.execute_command_enabled, "timeout": module.input.pre_deploy_timeout} : nil >>'
strategy:
@@
minimum_healthy_percent: "<< module.input.deployment_minimum_healthy_percent != nil ? module.input.deployment_minimum_healthy_percent : 100 >>"
type: rolling
task_definition:
- container_definitions: "<< (module.input.firelens_enabled ? [{\"command\": (len(module.input.image_start_command) > 0 ? module.input.image_start_command : nil), \"cpu\": (module.input.capacity_provider == \"ec2\" ? int(float(module.input.task_cpu) * 1024) : int(float(module.input.fargate_size.vcpu) * 1024)), \"depends_on\": [{\"container_name\": \"log_router\", \"condition\": \"START\"}], \"environment\": ([{name: \"PORT\", value: string(module.input.listeners[0].container_port)}] | concat(module.input.environment_variables != nil ? module.input.environment_variables : [])), \"essential\": true, \"image\": (module.input.build_source == \"image_registry\" ? (deploy.input.image_ref contains \"sha256:\" ? module.input.image_repository + \"@\" + deploy.input.image_ref : module.input.image_repository + \":\" + deploy.input.image_ref) : (deploy.input.image_ref contains \"sha256:\" ? stack.output.ecr_repository_url + \"@\" + deploy.input.image_ref : stack.output.ecr_repository_url + \":\" + deploy.input.image_ref)), \"linux_parameters\": {\"init_process_enabled\": true}, \"log_configuration\": {\"log_driver\": \"awsfirelens\"}, \"memory\": (module.input.capacity_provider == \"ec2\" ? int(float(module.input.task_memory) * 1024) : int(float(module.input.fargate_size.memory_gb) * 1024)), \"mount_points\": (module.input.efs_enabled ? [{\"source_volume\": \"efs\", \"container_path\": module.input.efs_mount_path, \"read_only\": module.input.efs_read_only}] : []), \"name\": (stack.output.container_name), \"port_mappings\": map(module.input.listeners, {\"container_port\": #.container_port, \"protocol\": (#.listener_protocol == \"UDP\" ? \"udp\" : \"tcp\")}), \"readonly_root_filesystem\": false, \"repository_credentials\": (module.input.image_registry_credentials_secret_arn ? {credentials_parameter: module.input.image_registry_credentials_secret_arn} : nil), \"secrets\": (module.input.secrets), \"stop_timeout\": (module.input.stop_timeout != nil ? module.input.stop_timeout : 30)}, {\"name\": \"log_router\", \"image\": module.input.firelens_image, \"cpu\": 0, \"memory_reservation\": 51, \"essential\": true, \"environment\": ([{name: \"FIRELENS_CONFIG_CONTENT\", value: \"[SERVICE]\\n Flush 1\\n Grace 30\\n\\n\" + (module.input.firelens_config ? module.input.firelens_config + \"\\n\" : \"\") + (module.input.firelens_cloudwatch_output_enabled ? \"\\n[OUTPUT]\\n Name cloudwatch\\n Match *\\n region \" + stack.output.region + \"\\n log_group_name \" + stack.output.log_group_name + \"\\n auto_create_group true\\n log_stream_prefix \" + stack.output.log_stream_prefix + \"/\\n retry_limit 2\\n log_key log\\n log_format json/emf\\n\" : \"\")}] | concat(module.input.firelens_environment_variables != nil ? module.input.firelens_environment_variables : [])), \"secrets\": module.input.firelens_secrets != nil ? module.input.firelens_secrets : [], \"command\": [\"/bin/sh\", \"-c\", \"printf '%s' \\\"$FIRELENS_CONFIG_CONTENT\\\" > /flightcontrol-firelens.conf && exec /entrypoint.sh\"], \"user\": \"0\", \"log_configuration\": {\"log_driver\": \"awslogs\", \"options\": {\"awslogs-group\": stack.output.log_group_name, \"awslogs-region\": stack.output.region, \"awslogs-stream-prefix\": stack.output.log_stream_prefix + \"/firelens\"}}, \"firelens_configuration\": {\"type\": \"fluentbit\", \"options\": {\"config-file-type\": \"file\", \"config-file-value\": \"/flightcontrol-firelens.conf\", \"enable-ecs-log-metadata\": string(module.input.firelens_ecs_metadata_enabled)}}}] : [{\"command\": (len(module.input.image_start_command) > 0 ? module.input.image_start_command : nil), \"cpu\": (module.input.capacity_provider == \"ec2\" ? int(float(module.input.task_cpu) * 1024) : int(float(module.input.fargate_size.vcpu) * 1024)), \"environment\": ([{name: \"PORT\", value: string(module.input.listeners[0].container_port)}] | concat(module.input.environment_variables != nil ? module.input.environment_variables : [])), \"essential\": true, \"image\": (module.input.build_source == \"image_registry\" ? (deploy.input.image_ref contains \"sha256:\" ? module.input.image_repository + \"@\" + deploy.input.image_ref : module.input.image_repository + \":\" + deploy.input.image_ref) : (deploy.input.image_ref contains \"sha256:\" ? stack.output.ecr_repository_url + \"@\" + deploy.input.image_ref : stack.output.ecr_repository_url + \":\" + deploy.input.image_ref)), \"linux_parameters\": {\"init_process_enabled\": true}, \"log_configuration\": {\"log_driver\": \"awslogs\", \"options\": {\"awslogs-group\": stack.output.log_group_name, \"awslogs-region\": stack.output.region, \"awslogs-stream-prefix\": stack.output.log_stream_prefix}}, \"memory\": (module.input.capacity_provider == \"ec2\" ? int(float(module.input.task_memory) * 1024) : int(float(module.input.fargate_size.memory_gb) * 1024)), \"mount_points\": (module.input.efs_enabled ? [{\"source_volume\": \"efs\", \"container_path\": module.input.efs_mount_path, \"read_only\": module.input.efs_read_only}] : []), \"name\": (stack.output.container_name), \"port_mappings\": map(module.input.listeners, {\"container_port\": #.container_port, \"protocol\": (#.listener_protocol == \"UDP\" ? \"udp\" : \"tcp\")}), \"readonly_root_filesystem\": false, \"repository_credentials\": (module.input.image_registry_credentials_secret_arn ? {credentials_parameter: module.input.image_registry_credentials_secret_arn} : nil), \"secrets\": (module.input.secrets), \"stop_timeout\": (module.input.stop_timeout != nil ? module.input.stop_timeout : 30)}]) | concat(module.input.sidecars ? map(module.input.sidecars, {\"name\": #.name, \"image\": #.image, \"essential\": #.essential, \"cpu\": (#.cpu ? int(float(#.cpu) * 1024) : nil), \"memory\": (#.memory ? int(float(#.memory) * 1024) : nil), \"memory_reservation\": (#.memory_reservation ? int(float(#.memory_reservation) * 1024) : nil), \"environment\": #.environment, \"secrets\": #.secrets, \"port_mappings\": #.port_mappings, \"mount_points\": #.mount_points, \"depends_on\": #.depends_on, \"command\": #.command, \"entry_point\": #.entry_point, \"working_directory\": #.working_directory}) : []) >>"
+ container_definitions: "
... diff truncated ...rvn-ecs-web 2.8.0 -> 2.9.0--- remote
+++ compiled
placeholder: sha256:... or latest or <run-id>-railpack
required: true
type: string
+ - description: Plain environment variables to set for this deploy. Only names listed in the module's Deploy-provided environment variables input are applied; others are ignored. Can't replace a runtime variable or secret.
+ id: environment_variables
+ label: Environment variables
+ placeholder: |-
+ - name: LOG_LEVEL
+ value: info
+ required: false
+ type: array
post_deploy: '<< module.input.post_deploy_enabled && len(module.input.post_deploy_command) > 0 ? {"container_overrides": [{"name": stack.output.container_name, "command": module.input.post_deploy_command, "environment": module.input.post_deploy_environment_variables, "cpu": (module.input.post_deploy_cpu ? int(float(module.input.post_deploy_cpu) * 1024) : nil), "memory": (module.input.post_deploy_memory ? int(float(module.input.post_deploy_memory) * 1024) : nil)}], "cpu": string(module.input.post_deploy_cpu ? int(float(module.input.post_deploy_cpu) * 1024) : (module.input.capacity_provider == "ec2" ? int(float(module.input.task_cpu) * 1024) : int(float(module.input.fargate_size.vcpu) * 1024))), "memory": string(module.input.post_deploy_memory ? int(float(module.input.post_deploy_memory) * 1024) : (module.input.capacity_provider == "ec2" ? int(float(module.input.task_memory) * 1024) : int(float(module.input.fargate_size.memory_gb) * 1024))), "ephemeral_storage": (module.input.post_deploy_ephemeral_storage_size_gib ? {size_in_gib: module.input.post_deploy_ephemeral_storage_size_gib} : nil), "task_role_arn": stack.output.task_role_arn, "execution_role_arn": stack.output.execution_role_arn, "capacity_provider_strategy": (get(module.input.advanced_terraform_variables, "capacity_provider_strategies") != nil ? get(module.input.advanced_terraform_variables, "capacity_provider_strategies") : ((module.input.capacity_provider == "fargate" || module.input.additional_fargate_capacity_enabled ? [{capacity_provider: module.input.fargate_capacity_provider_name, weight: 1, base: 0}] : []) | concat(module.input.capacity_provider == "fargate_spot" || module.input.additional_fargate_spot_capacity_enabled ? [{capacity_provider: module.input.fargate_spot_capacity_provider_name, weight: 1, base: 0}] : []) | concat(module.input.capacity_provider == "ec2" || module.input.additional_ec2_capacity_enabled ? [{capacity_provider: module.input.ec2_capacity_provider_name, weight: 1, base: 0}] : []))), "network_configuration": {"awsvpc_configuration": {"subnets": (module.input.private_subnet_placement_enabled ? module.input.private_subnet_ids : module.input.public_subnet_ids), "security_groups": ([stack.output.security_group_id] | concat(module.input.security_group_ids != nil ? module.input.security_group_ids : [])), "assign_public_ip": (module.input.private_subnet_placement_enabled ? "DISABLED" : "ENABLED")}}, "enable_execute_command": module.input.execute_command_enabled, "timeout": module.input.post_deploy_timeout} : nil >>'
pre_deploy: '<< module.input.pre_deploy_enabled && len(module.input.pre_deploy_command) > 0 ? {"container_overrides": [{"name": stack.output.container_name, "command": module.input.pre_deploy_command, "environment": module.input.pre_deploy_environment_variables, "cpu": (module.input.pre_deploy_cpu ? int(float(module.input.pre_deploy_cpu) * 1024) : nil), "memory": (module.input.pre_deploy_memory ? int(float(module.input.pre_deploy_memory) * 1024) : nil)}], "cpu": string(module.input.pre_deploy_cpu ? int(float(module.input.pre_deploy_cpu) * 1024) : (module.input.capacity_provider == "ec2" ? int(float(module.input.task_cpu) * 1024) : int(float(module.input.fargate_size.vcpu) * 1024))), "memory": string(module.input.pre_deploy_memory ? int(float(module.input.pre_deploy_memory) * 1024) : (module.input.capacity_provider == "ec2" ? int(float(module.input.task_memory) * 1024) : int(float(module.input.fargate_size.memory_gb) * 1024))), "ephemeral_storage": (module.input.pre_deploy_ephemeral_storage_size_gib ? {size_in_gib: module.input.pre_deploy_ephemeral_storage_size_gib} : nil), "task_role_arn": stack.output.task_role_arn, "execution_role_arn": stack.output.execution_role_arn, "capacity_provider_strategy": (get(module.input.advanced_terraform_variables, "capacity_provider_strategies") != nil ? get(module.input.advanced_terraform_variables, "capacity_provider_strategies") : ((module.input.capacity_provider == "fargate" || module.input.additional_fargate_capacity_enabled ? [{capacity_provider: module.input.fargate_capacity_provider_name, weight: 1, base: 0}] : []) | concat(module.input.capacity_provider == "fargate_spot" || module.input.additional_fargate_spot_capacity_enabled ? [{capacity_provider: module.input.fargate_spot_capacity_provider_name, weight: 1, base: 0}] : []) | concat(module.input.capacity_provider == "ec2" || module.input.additional_ec2_capacity_enabled ? [{capacity_provider: module.input.ec2_capacity_provider_name, weight: 1, base: 0}] : []))), "network_configuration": {"awsvpc_configuration": {"subnets": (module.input.private_subnet_placement_enabled ? module.input.private_subnet_ids : module.input.public_subnet_ids), "security_groups": ([stack.output.security_group_id] | concat(module.input.security_group_ids != nil ? module.input.security_group_ids : [])), "assign_public_ip": (module.input.private_subnet_placement_enabled ? "DISABLED" : "ENABLED")}}, "enable_execute_command": module.input.execute_command_enabled, "timeout": module.input.pre_deploy_timeout} : nil >>'
strategy: |
@@
}
>>
task_definition:
- container_definitions: "<< (module.input.firelens_enabled ? [{\"command\": (len(module.input.image_start_command) > 0 ? module.input.image_start_command : nil), \"cpu\": (module.input.capacity_provider == \"ec2\" ? int(float(module.input.task_cpu) * 1024) : int(float(module.input.fargate_size.vcpu) * 1024)), \"depends_on\": [{\"container_name\": \"log_router\", \"condition\": \"START\"}], \"environment\": ([{name: \"PORT\", value: string(module.input.container_port)}] | concat(module.input.environment_variables != nil ? module.input.environment_variables : [])), \"essential\": true, \"image\": (module.input.build_source == \"image_registry\" ? (deploy.input.image_ref contains \"sha256:\" ? module.input.image_repository + \"@\" + deploy.input.image_ref : module.input.image_repository + \":\" + deploy.input.image_ref) : (deploy.input.image_ref contains \"sha256:\" ? stack.output.ecr_repository_url + \"@\" + deploy.input.image_ref : stack.output.ecr_repository_url + \":\" + deploy.input.image_ref)), \"linux_parameters\": {\"init_process_enabled\": true}, \"log_configuration\": {\"log_driver\": \"awsfirelens\"}, \"memory\": (module.input.capacity_provider == \"ec2\" ? int(float(module.input.task_memory) * 1024) : int(float(module.input.fargate_size.memory_gb) * 1024)), \"mount_points\": (module.input.efs_enabled ? [{\"source_volume\": \"efs\", \"container_path\": module.input.efs_mount_path, \"read_only\": module.input.efs_read_only}] : []), \"name\": (stack.output.container_name), \"port_mappings\": [{\"app_protocol\": \"http\", \"container_port\": (module.input.container_port), \"protocol\": \"tcp\"}], \"readonly_root_filesystem\": false, \"repository_credentials\": (module.input.image_registry_credentials_secret_arn ? {credentials_parameter: module.input.image_registry_credentials_secret_arn} : nil), \"secrets\": (module.input.secrets), \"stop_timeout\": (module.input.stop_timeout != nil ? module.input.stop_timeout : 30)}, {\"name\": \"log_router\", \"image\": module.input.firelens_image, \"cpu\": 0, \"memory_reservation\": 51, \"essential\": true, \"environment\": ([{name: \"FIRELENS_CONFIG_CONTENT\", value: \"[SERVICE]\\n Flush 1\\n Grace 30\\n\\n\" + (module.input.firelens_config ? module.input.firelens_config + \"\\n\" : \"\") + (module.input.firelens_cloudwatch_output_enabled ? \"\\n[OUTPUT]\\n Name cloudwatch\\n Match *\\n region \" + stack.output.region + \"\\n log_group_name \" + stack.output.log_group_name + \"\\n auto_create_group true\\n log_stream_prefix \" + stack.output.log_stream_prefix + \"/\\n retry_limit 2\\n log_key log\\n log_format json/emf\\n\" : \"\")}] | concat(module.input.firelens_environment_variables != nil ? module.input.firelens_environment_variables : [])), \"secrets\": module.input.firelens_secrets != nil ? module.input.firelens_secrets : [], \"command\": [\"/bin/sh\", \"-c\", \"printf '%s' \\\"$FIRELENS_CONFIG_CONTENT\\\" > /flightcontrol-firelens.conf && exec /entrypoint.sh\"], \"user\": \"0\", \"log_configuration\": {\"log_driver\": \"awslogs\", \"options\": {\"awslogs-group\": stack.output.log_group_name, \"awslogs-region\": stack.output.region, \"awslogs-stream-prefix\": stack.output.log_stream_prefix + \"/firelens\"}}, \"firelens_configuration\": {\"type\": \"fluentbit\", \"options\": {\"config-file-type\": \"file\", \"config-file-value\": \"/flightcontrol-firelens.conf\", \"enable-ecs-log-metadata\": string(module.input.firelens_ecs_metadata_enabled)}}}] : [{\"command\": (len(module.input.image_start_command) > 0 ? module.input.image_start_command : nil), \"cpu\": (module.input.capacity_provider == \"ec2\" ? int(float(module.input.task_cpu) * 1024) : int(float(module.input.fargate_size.vcpu) * 1024)), \"environment\": ([{name: \"PORT\", value: string(module.input.container_port)}] | concat(module.input.environment_variables != nil ? module.input.environment_variables : [])), \"essential\": true, \"image\": (module.input.build_source == \"image_registry\" ? (deploy.input.image_ref contains \"sha256:\" ? module.input.image_repository + \"@\" + deploy.input.image_ref : module.input.image_repository + \":\" + deploy.input.image_ref) : (deploy.input.image_ref contains \"sha256:\" ? stack.output.ecr_repository_url + \"@\" + deploy.input.image_ref : stack.output.ecr_repository_url + \":\" + deploy.input.image_ref)), \"linux_parameters\": {\"init_process_enabled\": true}, \"log_configuration\": {\"log_driver\": \"awslogs\", \"options\": {\"awslogs-group\": stack.output.log_group_name, \"awslogs-region\": stack.output.region, \"awslogs-stream-prefix\": stack.output.log_stream_prefix}}, \"memory\": (module.input.capacity_provider == \"ec2\" ? int(float(module.input.task_memory) * 1024) : int(float(module.input.fargate_size.memory_gb) * 1024)), \"mount_points\": (module.input.efs_enabled ? [{\"source_volume\": \"efs\", \"container_path\": module.input.efs_mount_path, \"read_only\": module.input.efs_read_only}] : []), \"name\": (stack.output.container_name), \"port_mappings\": [{\"app_protocol\": \"http\", \"container_port\": (module.input.container_port), \"protocol\": \"tcp\"}], \"readonly_root_filesystem\": false, \"repository_credentials\": (module.input.image_registry_credentials_secret_arn ? {credentials_parameter: module.input.image_registry_credentials_secret_arn} : nil), \"secrets\": (module.input.secrets), \"stop_timeout\": (module.input.stop_timeout != nil ? module.input.stop_timeout : 30)}]) | concat(module.input.sidecars ? map(module.input.sidecars, {\"name\": #.name, \"image\": #.image, \"essential\": #.essential, \"cpu\": (#.cpu ? int(float(#.cpu) * 1024) : nil), \"memory\": (#.memory ? int(float(#.memory) * 1024) : nil), \"memory_reservation\": (#.memory_reservation ? int(float(#.memory_reservation) * 1024) : nil), \"environment\": #.environment, \"secrets\": #.secrets, \"port_mappings\": #.port_mappings, \"mount_points\": #.mount_points, \"depends_on\": #.depends_on, \"command\": #.command, \"entry_point\": #.entry_point, \"working_directory\": #.working_directory}) : []) >>"
+ container_definitions: "<< (module.input.firelens_enabled ? [{\"command\": (len(module.input.image_start_command) > 0 ? module.input.image_start_command : nil), \"cpu\": (module.input.capacity_provider == \"ec2\" ? int(float(module.input.task_cpu) * 1024) : int(f
... diff truncated ...rvn-ecs-worker 2.4.0 -> 2.5.0--- remote
+++ compiled
placeholder: sha256:... or latest or <run-id>-railpack
required: true
type: string
+ - description: Plain environment variables to set for this deploy. Only names listed in the module's Deploy-provided environment variables input are applied; others are ignored. Can't replace a runtime variable or secret.
+ id: environment_variables
+ label: Environment variables
+ placeholder: |-
+ - name: LOG_LEVEL
+ value: info
+ required: false
+ type: array
post_deploy: '<< module.input.post_deploy_enabled && len(module.input.post_deploy_command) > 0 ? {"container_overrides": [{"name": stack.output.container_name, "command": module.input.post_deploy_command, "environment": module.input.post_deploy_environment_variables, "cpu": (module.input.post_deploy_cpu ? int(float(module.input.post_deploy_cpu) * 1024) : nil), "memory": (module.input.post_deploy_memory ? int(float(module.input.post_deploy_memory) * 1024) : nil)}], "cpu": string(module.input.post_deploy_cpu ? int(float(module.input.post_deploy_cpu) * 1024) : (module.input.capacity_provider == "ec2" ? int(float(module.input.task_cpu) * 1024) : int(float(module.input.fargate_size.vcpu) * 1024))), "memory": string(module.input.post_deploy_memory ? int(float(module.input.post_deploy_memory) * 1024) : (module.input.capacity_provider == "ec2" ? int(float(module.input.task_memory) * 1024) : int(float(module.input.fargate_size.memory_gb) * 1024))), "ephemeral_storage": (module.input.post_deploy_ephemeral_storage_size_gib ? {size_in_gib: module.input.post_deploy_ephemeral_storage_size_gib} : nil), "task_role_arn": stack.output.task_role_arn, "execution_role_arn": stack.output.execution_role_arn, "capacity_provider_strategy": (get(module.input.advanced_terraform_variables, "capacity_provider_strategies") != nil ? get(module.input.advanced_terraform_variables, "capacity_provider_strategies") : ((module.input.capacity_provider == "fargate" || module.input.additional_fargate_capacity_enabled ? [{capacity_provider: module.input.fargate_capacity_provider_name, weight: 1, base: 0}] : []) | concat(module.input.capacity_provider == "fargate_spot" || module.input.additional_fargate_spot_capacity_enabled ? [{capacity_provider: module.input.fargate_spot_capacity_provider_name, weight: 1, base: 0}] : []) | concat(module.input.capacity_provider == "ec2" || module.input.additional_ec2_capacity_enabled ? [{capacity_provider: module.input.ec2_capacity_provider_name, weight: 1, base: 0}] : []))), "network_configuration": {"awsvpc_configuration": {"subnets": (module.input.private_subnet_placement_enabled ? module.input.private_subnet_ids : module.input.public_subnet_ids), "security_groups": ([stack.output.security_group_id] | concat(module.input.security_group_ids != nil ? module.input.security_group_ids : [])), "assign_public_ip": (module.input.private_subnet_placement_enabled ? "DISABLED" : "ENABLED")}}, "enable_execute_command": module.input.execute_command_enabled, "timeout": module.input.post_deploy_timeout} : nil >>'
pre_deploy: '<< module.input.pre_deploy_enabled && len(module.input.pre_deploy_command) > 0 ? {"container_overrides": [{"name": stack.output.container_name, "command": module.input.pre_deploy_command, "environment": module.input.pre_deploy_environment_variables, "cpu": (module.input.pre_deploy_cpu ? int(float(module.input.pre_deploy_cpu) * 1024) : nil), "memory": (module.input.pre_deploy_memory ? int(float(module.input.pre_deploy_memory) * 1024) : nil)}], "cpu": string(module.input.pre_deploy_cpu ? int(float(module.input.pre_deploy_cpu) * 1024) : (module.input.capacity_provider == "ec2" ? int(float(module.input.task_cpu) * 1024) : int(float(module.input.fargate_size.vcpu) * 1024))), "memory": string(module.input.pre_deploy_memory ? int(float(module.input.pre_deploy_memory) * 1024) : (module.input.capacity_provider == "ec2" ? int(float(module.input.task_memory) * 1024) : int(float(module.input.fargate_size.memory_gb) * 1024))), "ephemeral_storage": (module.input.pre_deploy_ephemeral_storage_size_gib ? {size_in_gib: module.input.pre_deploy_ephemeral_storage_size_gib} : nil), "task_role_arn": stack.output.task_role_arn, "execution_role_arn": stack.output.execution_role_arn, "capacity_provider_strategy": (get(module.input.advanced_terraform_variables, "capacity_provider_strategies") != nil ? get(module.input.advanced_terraform_variables, "capacity_provider_strategies") : ((module.input.capacity_provider == "fargate" || module.input.additional_fargate_capacity_enabled ? [{capacity_provider: module.input.fargate_capacity_provider_name, weight: 1, base: 0}] : []) | concat(module.input.capacity_provider == "fargate_spot" || module.input.additional_fargate_spot_capacity_enabled ? [{capacity_provider: module.input.fargate_spot_capacity_provider_name, weight: 1, base: 0}] : []) | concat(module.input.capacity_provider == "ec2" || module.input.additional_ec2_capacity_enabled ? [{capacity_provider: module.input.ec2_capacity_provider_name, weight: 1, base: 0}] : []))), "network_configuration": {"awsvpc_configuration": {"subnets": (module.input.private_subnet_placement_enabled ? module.input.private_subnet_ids : module.input.public_subnet_ids), "security_groups": ([stack.output.security_group_id] | concat(module.input.security_group_ids != nil ? module.input.security_group_ids : [])), "assign_public_ip": (module.input.private_subnet_placement_enabled ? "DISABLED" : "ENABLED")}}, "enable_execute_command": module.input.execute_command_enabled, "timeout": module.input.pre_deploy_timeout} : nil >>'
strategy:
@@
minimum_healthy_percent: "<< module.input.deployment_minimum_healthy_percent != nil ? module.input.deployment_minimum_healthy_percent : 100 >>"
type: rolling
task_definition:
- container_definitions: "<< (module.input.firelens_enabled ? [{\"command\": (len(module.input.image_start_command) > 0 ? module.input.image_start_command : nil), \"cpu\": (module.input.capacity_provider == \"ec2\" ? int(float(module.input.task_cpu) * 1024) : int(float(module.input.fargate_size.vcpu) * 1024)), \"depends_on\": [{\"container_name\": \"log_router\", \"condition\": \"START\"}], \"environment\": (module.input.environment_variables != nil ? module.input.environment_variables : []), \"essential\": true, \"image\": (module.input.build_source == \"image_registry\" ? (deploy.input.image_ref contains \"sha256:\" ? module.input.image_repository + \"@\" + deploy.input.image_ref : module.input.image_repository + \":\" + deploy.input.image_ref) : (deploy.input.image_ref contains \"sha256:\" ? stack.output.ecr_repository_url + \"@\" + deploy.input.image_ref : stack.output.ecr_repository_url + \":\" + deploy.input.image_ref)), \"linux_parameters\": {\"init_process_enabled\": true}, \"log_configuration\": {\"log_driver\": \"awsfirelens\"}, \"memory\": (module.input.capacity_provider == \"ec2\" ? int(float(module.input.task_memory) * 1024) : int(float(module.input.fargate_size.memory_gb) * 1024)), \"mount_points\": (module.input.efs_enabled ? [{\"source_volume\": \"efs\", \"container_path\": module.input.efs_mount_path, \"read_only\": module.input.efs_read_only}] : []), \"name\": (stack.output.container_name), \"readonly_root_filesystem\": false, \"repository_credentials\": (module.input.image_registry_credentials_secret_arn ? {credentials_parameter: module.input.image_registry_credentials_secret_arn} : nil), \"secrets\": (module.input.secrets), \"stop_timeout\": (module.input.stop_timeout != nil ? module.input.stop_timeout : 30)}, {\"name\": \"log_router\", \"image\": module.input.firelens_image, \"cpu\": 0, \"memory_reservation\": 51, \"essential\": true, \"environment\": ([{name: \"FIRELENS_CONFIG_CONTENT\", value: \"[SERVICE]\\n Flush 1\\n Grace 30\\n\\n\" + (module.input.firelens_config ? module.input.firelens_config + \"\\n\" : \"\") + (module.input.firelens_cloudwatch_output_enabled ? \"\\n[OUTPUT]\\n Name cloudwatch\\n Match *\\n region \" + stack.output.region + \"\\n log_group_name \" + stack.output.log_group_name + \"\\n auto_create_group true\\n log_stream_prefix \" + stack.output.log_stream_prefix + \"/\\n retry_limit 2\\n log_key log\\n log_format json/emf\\n\" : \"\")}] | concat(module.input.firelens_environment_variables != nil ? module.input.firelens_environment_variables : [])), \"secrets\": module.input.firelens_secrets != nil ? module.input.firelens_secrets : [], \"command\": [\"/bin/sh\", \"-c\", \"printf '%s' \\\"$FIRELENS_CONFIG_CONTENT\\\" > /flightcontrol-firelens.conf && exec /entrypoint.sh\"], \"user\": \"0\", \"log_configuration\": {\"log_driver\": \"awslogs\", \"options\": {\"awslogs-group\": stack.output.log_group_name, \"awslogs-region\": stack.output.region, \"awslogs-stream-prefix\": stack.output.log_stream_prefix + \"/firelens\"}}, \"firelens_configuration\": {\"type\": \"fluentbit\", \"options\": {\"config-file-type\": \"file\", \"config-file-value\": \"/flightcontrol-firelens.conf\", \"enable-ecs-log-metadata\": string(module.input.firelens_ecs_metadata_enabled)}}}] : [{\"command\": (len(module.input.image_start_command) > 0 ? module.input.image_start_command : nil), \"cpu\": (module.input.capacity_provider == \"ec2\" ? int(float(module.input.task_cpu) * 1024) : int(float(module.input.fargate_size.vcpu) * 1024)), \"environment\": (module.input.environment_variables != nil ? module.input.environment_variables : []), \"essential\": true, \"image\": (module.input.build_source == \"image_registry\" ? (deploy.input.image_ref contains \"sha256:\" ? module.input.image_repository + \"@\" + deploy.input.image_ref : module.input.image_repository + \":\" + deploy.input.image_ref) : (deploy.input.image_ref contains \"sha256:\" ? stack.output.ecr_repository_url + \"@\" + deploy.input.image_ref : stack.output.ecr_repository_url + \":\" + deploy.input.image_ref)), \"linux_parameters\": {\"init_process_enabled\": true}, \"log_configuration\": {\"log_driver\": \"awslogs\", \"options\": {\"awslogs-group\": stack.output.log_group_name, \"awslogs-region\": stack.output.region, \"awslogs-stream-prefix\": stack.output.log_stream_prefix}}, \"memory\": (module.input.capacity_provider == \"ec2\" ? int(float(module.input.task_memory) * 1024) : int(float(module.input.fargate_size.memory_gb) * 1024)), \"mount_points\": (module.input.efs_enabled ? [{\"source_volume\": \"efs\", \"container_path\": module.input.efs_mount_path, \"read_only\": module.input.efs_read_only}] : []), \"name\": (stack.output.container_name), \"readonly_root_filesystem\": false, \"repository_credentials\": (module.input.image_registry_credentials_secret_arn ? {credentials_parameter: module.input.image_registry_credentials_secret_arn} : nil), \"secrets\": (module.input.secrets), \"stop_timeout\": (module.input.stop_timeout != nil ? module.input.stop_timeout : 30)}]) | concat(module.input.sidecars ? map(module.input.sidecars, {\"name\": #.name, \"image\": #.image, \"essential\": #.essential, \"cpu\": (#.cpu ? int(float(#.cpu) * 1024) : nil), \"memory\": (#.memory ? int(float(#.memory) * 1024) : nil), \"memory_reservation\": (#.memory_reservation ? int(float(#.memory_reservation) * 1024) : nil), \"environment\": #.environment, \"secrets\": #.secrets, \"port_mappings\": #.port_mappings, \"mount_points\": #.mount_points, \"depends_on\": #.depends_on, \"command\": #.command, \"entry_point\": #.entry_point, \"working_directory\": #.working_directory}) : []) >>"
+ container_definitions: "<< (module.input.firelens_enabled ? [{\"command\": (len(module.input.image_start_command) > 0 ? module.input.image_start_command : nil), \"cpu\": (module.input.capacity_provider == \"ec2\" ? int(float(module.input.task_cpu) * 1024) : int(float(module.input.fargate_size.vcpu) * 1024)), \"depends_on\": [{\"container_name\": \"log_router\", \"condition\": \"START\"}], \"environment\": ((module.input.environment_variables != nil ? module.input.environment_variables : []) | concat(mod
... diff truncated ...rvn-eks-addons 0.28.0 -> 1.0.0--- remote
+++ compiled
- Each load balancer's security group is automatically allowed to reach pods through the EKS cluster security group (all TCP ports).
- Because `TargetGroupBinding` depends on the controller, enabling any load balancer automatically installs the **load balancer controller** - there is nothing extra to configure.
- Terraform source: [ravionhq/modules/compute/eks/addons](https://github.com/ravionhq/modules/tree/rvn-eks-addons@0.28.0/compute/eks/addons)
+ Terraform source: [ravionhq/modules/compute/eks/addons](https://github.com/ravionhq/modules/tree/rvn-eks-addons@1.0.0/compute/eks/addons)
## Prerequisites
@@
execution_environment_overrides:
security_group: << module.input.ravion_runner_security_group_id >>
plan_permissions: '<< module.input.terraform_plan_default_policies_enabled == false ? {"replace": module.input.terraform_plan_iam_policy_arns} : (module.input.terraform_plan_iam_policy_arns ? {"attach": module.input.terraform_plan_iam_policy_arns} : nil) >>'
- ref: rvn-eks-addons@0.28.0
+ ref: rvn-eks-addons@1.0.0
repo: https://github.com/ravionhq/modules
stack_id: <<stack.id>>
terraform_variables:rvn-eks-addons 0.28.0 -> 1.0.0--- remote
+++ compiled
-isGlobalPublished: false
+isGlobalPublished: truervn-eks-chart 0.3.3 -> 1.0.0--- remote
+++ compiled
Unlike EKS Web Service and EKS Worker, this module has no build and no image. The chart decides which Kubernetes resources to create, and your values configure them.
- Terraform source: [ravionhq/modules/compute/eks_service](https://github.com/ravionhq/modules/tree/rvn-eks-chart@0.3.3/compute/eks_service)
+ Terraform source: [ravionhq/modules/compute/eks_service](https://github.com/ravionhq/modules/tree/rvn-eks-chart@1.0.0/compute/eks_service)
## Use cases
@@
execution_environment_overrides:
security_group: << module.input.ravion_runner_security_group_id >>
plan_permissions: '<< module.input.terraform_plan_default_policies_enabled == false ? {"replace": module.input.terraform_plan_iam_policy_arns} : (module.input.terraform_plan_iam_policy_arns ? {"attach": module.input.terraform_plan_iam_policy_arns} : nil) >>'
- ref: rvn-eks-chart@0.3.3
+ ref: rvn-eks-chart@1.0.0
repo: https://github.com/ravionhq/modules
stack_id: <<stack.id>>
terraform_variables:rvn-eks-chart 0.3.3 -> 1.0.0--- remote
+++ compiled
-isGlobalPublished: false
+isGlobalPublished: truervn-eks-cluster 0.10.0 -> 1.0.0--- remote
+++ compiled
This module talks only to the AWS API, so it provisions in a single apply. It installs the Metrics Server EKS community add-on by default for CPU/memory autoscaling and `kubectl top`. Metrics Server is independent of the observability destinations in the separate **EKS Add-ons** module. Optional extensions - Karpenter autoscaling, the AWS Load Balancer Controller, the EBS CSI driver, and Container Insights - are added by that module.
- Terraform source: [ravionhq/modules/compute/eks](https://github.com/ravionhq/modules/tree/rvn-eks-cluster@0.10.0/compute/eks)
+ Terraform source: [ravionhq/modules/compute/eks](https://github.com/ravionhq/modules/tree/rvn-eks-cluster@1.0.0/compute/eks)
**Metrics Server** provides the Kubernetes `metrics.k8s.io` resource metrics API used by CPU/memory HorizontalPodAutoscalers and `kubectl top`. The AWS-managed community add-on is on by default and uses port 10251 for its server to avoid Fargate's port 10250 conflict; it still needs access to kubelets on port 10250. To use an existing Metrics Server instead, set `metrics_server_enabled: false` under **Advanced Terraform variables**. You can also set `metrics_server_addon_version` there to pin a tested EKS add-on version; without a pin, EKS selects a compatible version when the add-on is created, not on every apply.
@@
branch: main
execution_environment_id: << module.input.execution_environment_id >>
plan_permissions: '<< module.input.terraform_plan_default_policies_enabled == false ? {"replace": module.input.terraform_plan_iam_policy_arns} : (module.input.terraform_plan_iam_policy_arns ? {"attach": module.input.terraform_plan_iam_policy_arns} : nil) >>'
- ref: rvn-eks-cluster@0.10.0
+ ref: rvn-eks-cluster@1.0.0
repo: https://github.com/ravionhq/modules
stack_id: <<stack.id>>
terraform_variables:rvn-eks-cluster 0.10.0 -> 1.0.0--- remote
+++ compiled
-isGlobalPublished: false
+isGlobalPublished: truervn-eks-web 1.16.0 -> 1.17.0--- remote
+++ compiled
source:
base_path: charts/rvn-eks-web
branch: main
- ref: rvn-eks-web@1.16.0
+ ref: rvn-eks-web@1.17.0
repo_url: https://github.com/ravionhq/modules
type: git
type: helm
@@
targetMemoryUtilizationPercentage: << module.input.autoscaling_memory_target >>
command: "<< module.input.start_command != nil ? module.input.start_command : [] >>"
containerPort: << module.input.container_port >>
- env: '<< [{"name": "PORT", "value": string(module.input.container_port)}] | concat(module.input.environment_variables != nil ? module.input.environment_variables : []) >>'
+ env: '<< [{"name": "PORT", "value": string(module.input.container_port)}] | concat(module.input.environment_variables != nil ? module.input.environment_variables : []) | concat(module.input.deploy_environment_variable_names != nil && deploy.input.environment_variables != nil ? map(filter(deploy.input.environment_variables, #.name != "PORT" && #.name in module.input.deploy_environment_variable_names && #.value != nil && !(#.name in map(module.input.environment_variables ?? [], .name)) && !(#.name in map(module.input.secrets ?? [], .name))), {"name": #.name, "value": string(#.value)}) : []) >>'
fullnameOverride: << module.input.name >>
image:
digest: '<< deploy.input.image_ref contains "sha256:" ? deploy.input.image_ref : "" >>'
@@
placeholder: sha256:... or latest
required: true
type: string
+ - description: Plain environment variables to set for this deploy. Only names listed in the module's Deploy-provided environment variables input are applied; others are ignored. Can't replace a runtime variable or secret.
+ id: environment_variables
+ label: Environment variables
+ placeholder: |-
+ - name: LOG_LEVEL
+ value: info
+ required: false
+ type: array
timeout: 1800
type: aws:eks
inputs:
@@
- name: DATABASE_URL
value_from: arn:aws:secretsmanager:us-east-1:123456789012:secret:db-AbCdEf:url::
type: array
+ - add_button_label: Add env var name
+ collapsible: true
+ description: Names a pipeline deploy step may set with `input.environment_variables`. Plain values only; can't replace a runtime variable or secret.
+ id: deploy_environment_variable_names
+ label: Deploy-provided environment variables
+ required: false
+ type: string_array
- id: section_iam
label: IAM roles and policies
type: section
@@
Terraform owns the `aws_lb_target_group` and `aws_lb_listener_rule` against a shared load balancer, and the AWS Load Balancer Controller registers pod IPs into that target group. The chart does not create an Ingress, so no per-service load balancer is provisioned. This is the same routing shape as ECS Web Server, so a service moving from ECS keeps its routing model.
- Chart source: [ravionhq/modules/charts/rvn-eks-web](https://github.com/ravionhq/modules/tree/rvn-eks-web@1.16.0/charts/rvn-eks-web)
+ Chart source: [ravionhq/modules/charts/rvn-eks-web](https://github.com/ravionhq/modules/tree/rvn-eks-web@1.17.0/charts/rvn-eks-web)
- Terraform source: [ravionhq/modules/compute/eks_service](https://github.com/ravionhq/modules/tree/rvn-eks-web@1.16.0/compute/eks_service)
+ Terraform source: [ravionhq/modules/compute/eks_service](https://github.com/ravionhq/modules/tree/rvn-eks-web@1.17.0/compute/eks_service)
## Use cases
@@
Use **Runtime environment variables** for plain values, as an array of `{name, value}` objects.
+ Use **Deploy-provided environment variables** to allow a pipeline deploy step to set selected plain values. They cannot replace a Runtime environment variable or Runtime secret, and `PORT` is reserved for the web service.
+
Use **Runtime secrets** for sensitive values, as an array of `{name, value_from}` objects - the same shape as ECS, so a service migrating from ECS Web Server carries its secret configuration unchanged. `value_from` must be a full Secrets Manager or SSM Parameter Store ARN, including the JSON-key extraction suffix when you want a single key out of a JSON secret.
Ravion never reads these values. The ARNs travel to the chart as references, the chart renders an `ExternalSecret`, and the External Secrets Operator materializes the Kubernetes Secret in the cluster. No secret value reaches Ravion, the Helm values document, or the Helm release history.
@@
| Minimum available pods | No | 1 | Pods kept running during a node drain when the disruption budget is on |
| Runtime environment variables | No | - | Array of {name, value} objects |
| Runtime secrets | No | - | Array of {name, value_from} ARN references |
+ | Deploy-provided environment variables | No | - | Names a pipeline deploy step may set to plain values |
| Create IAM role | No | false | Create an IAM role for the workload and bind it to its pods through EKS Pod Identity |
| IAM role name | No | {service}-task | Explicit role name, for a service whose ECS task role already holds the default |
| IAM policy ARNs | No | [] | Managed policy ARNs attached to the workload role |
@@
execution_environment_overrides:
security_group: << module.input.ravion_runner_security_group_id >>
plan_permissions: '<< module.input.terraform_plan_default_policies_enabled == false ? {"replace": module.input.terraform_plan_iam_policy_arns} : (module.input.terraform_plan_iam_policy_arns ? {"attach": module.input.terraform_plan_iam_policy_arns} : nil) >>'
- ref: rvn-eks-web@1.16.0
+ ref: rvn-eks-web@1.17.0
repo: https://github.com/ravionhq/modules
stack_id: <<stack.id>>
terraform_variables:rvn-eks-web 1.16.0 -> 1.17.0--- remote
+++ compiled
-isGlobalPublished: false
+isGlobalPublished: truervn-eks-worker 0.17.0 -> 1.0.0--- remote
+++ compiled
source:
base_path: charts/rvn-eks-worker
branch: main
- ref: rvn-eks-worker@0.17.0
+ ref: rvn-eks-worker@1.0.0
repo_url: https://github.com/ravionhq/modules
type: git
type: helm
@@
targetCPUUtilizationPercentage: "<< module.input.autoscaling_cpu_target != nil ? module.input.autoscaling_cpu_target : 70 >>"
targetMemoryUtilizationPercentage: << module.input.autoscaling_memory_target >>
command: "<< module.input.start_command != nil ? module.input.start_command : [] >>"
- env: "<< module.input.environment_variables != nil ? module.input.environment_variables : [] >>"
+ env: '<< (module.input.environment_variables != nil ? module.input.environment_variables : []) | concat(module.input.deploy_environment_variable_names != nil && deploy.input.environment_variables != nil ? map(filter(deploy.input.environment_variables, #.name in module.input.deploy_environment_variable_names && #.value != nil && !(#.name in map(module.input.environment_variables ?? [], .name)) && !(#.name in map(module.input.secrets ?? [], .name))), {"name": #.name, "value": string(#.value)}) : []) >>'
fullnameOverride: << module.input.name >>
image:
digest: '<< deploy.input.image_ref contains "sha256:" ? deploy.input.image_ref : "" >>'
@@
placeholder: sha256:... or latest
required: true
type: string
+ - description: Plain environment variables to set for this deploy. Only names listed in the module's Deploy-provided environment variables input are applied; others are ignored. Can't replace a runtime variable or secret.
+ id: environment_variables
+ label: Environment variables
+ placeholder: |-
+ - name: LOG_LEVEL
+ value: info
+ required: false
+ type: array
timeout: 1800
type: aws:eks
inputs:
@@
- name: DATABASE_URL
value_from: arn:aws:secretsmanager:us-east-1:123456789012:secret:db-AbCdEf:url::
type: array
+ - add_button_label: Add env var name
+ collapsible: true
+ description: Names a pipeline deploy step may set with `input.environment_variables`. Plain values only; can't replace a runtime variable or secret.
+ id: deploy_environment_variable_names
+ label: Deploy-provided environment variables
+ required: false
+ type: string_array
- id: section_iam
label: IAM roles and policies
type: section
@@
The Terraform stack creates the ECR repository that Dockerfile and Railpack builds push to and, when Fargate is selected, a workload-specific EKS Fargate profile and pod execution role. On the Pull from image registry path with automatic or EC2 compute, the stack creates no AWS resources. Everything else the module needs - cluster endpoint, certificate authority data, private subnet IDs, and the Ravion Runner role - comes from the selected EKS Cluster module.
- Chart source: [ravionhq/modules/charts/rvn-eks-worker](https://github.com/ravionhq/modules/tree/rvn-eks-worker@0.17.0/charts/rvn-eks-worker)
+ Chart source: [ravionhq/modules/charts/rvn-eks-worker](https://github.com/ravionhq/modules/tree/rvn-eks-worker@1.0.0/charts/rvn-eks-worker)
- Terraform source: [ravionhq/modules/compute/eks_service](https://github.com/ravionhq/modules/tree/rvn-eks-worker@0.17.0/compute/eks_service)
+ Terraform source: [ravionhq/modules/compute/eks_service](https://github.com/ravionhq/modules/tree/rvn-eks-worker@1.0.0/compute/eks_service)
## Use cases
@@
Use **Runtime environment variables** for plain values, as an array of `{name, value}` objects.
+ Use **Deploy-provided environment variables** to allow a pipeline deploy step to set selected plain values. They cannot replace a Runtime environment variable or Runtime secret.
+
Use **Runtime secrets** for sensitive values, as an array of `{name, value_from}` objects - the same shape as ECS. `value_from` must be a full Secrets Manager or SSM Parameter Store ARN, including the JSON-key extraction suffix when you want a single key out of a JSON secret.
Ravion never reads these values. The ARNs travel to the chart as references, the chart renders an `ExternalSecret`, and the External Secrets Operator materializes the Kubernetes Secret in the cluster. No secret value reaches Ravion, the Helm values document, or the Helm release history.
@@
| Stop timeout (secs) | No | 30 | Drain window after SIGTERM |
| Runtime environment variables | No | - | Array of {name, value} objects |
| Runtime secrets | No | - | Array of {name, value_from} ARN references |
+ | Deploy-provided environment variables | No | - | Names a pipeline deploy step may set to plain values |
| Create IAM role | No | false | Create an IAM role for the workload and bind it to its pods through EKS Pod Identity |
| IAM role name | No | {service}-task | Explicit role name, for a service whose ECS task role already holds the default |
| IAM policy ARNs | No | [] | Managed policy ARNs attached to the workload role |
@@
execution_environment_overrides:
security_group: << module.input.ravion_runner_security_group_id >>
plan_permissions: '<< module.input.terraform_plan_default_policies_enabled == false ? {"replace": module.input.terraform_plan_iam_policy_arns} : (module.input.terraform_plan_iam_policy_arns ? {"attach": module.input.terraform_plan_iam_policy_arns} : nil) >>'
- ref: rvn-eks-worker@0.17.0
+ ref: rvn-eks-worker@1.0.0
repo: https://github.com/ravionhq/modules
stack_id: <<stack.id>>
terraform_variables:rvn-eks-worker 0.17.0 -> 1.0.0--- remote
+++ compiled
-isGlobalPublished: false
+isGlobalPublished: true |
flybayer
approved these changes
Oct 31, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Before: module publication never starts: automatic sizing’s historical-run lookup exceeds the webhook’s ~30-second deadline. Both the original job and one retry remain queued without a runner. Consequently the worker version from #253 is unavailable and Tower config #8985 cannot plan.
After: only the release publisher returns to its previous fixed 2 vCPU / 4 GiB runner. Removing CPU/memory/disk autosizing avoids that lookup; disk uses the fixed-shape default. Disk caching and non-interruptible execution remain enabled. No validation, publication, permission, or secret settings change; other jobs retain automatic sizing.
This is publication recovery, not a fix for the underlying autosizing query. It adds no job or host; publisher resource allocation is fixed rather than adaptive.
Once merged, verify the main publication run actually publishes
rvn-eks-worker@0.18.0, then replan #8985. Do not deploy #8986 until the module upgrade is applied.Validation: parsed workflow YAML; asserted that
jobs.publish.runs-onis the only semantic change and retainsinterruptible=false;git diff --checkand normal commit hooks passed.Link to Devin session: https://app.devin.ai/sessions/a65ede619c9d4171b242b95d57a991dd
Open in Devin Desktop: https://app.devin.ai/desktop/session/a65ede619c9d4171b242b95d57a991dd?variant=devin


Confidence Score: 5/5
The PR appears safe to merge; no actionable defects were found in the runner sizing change.Summary
Restores fixed runner sizing for the release publisher in
.github/workflows/module-definitions.yml.Reviews (1) · Last reviewed commit: "fix: constrain module publish runner sha..." · Reviewed by Greptile