| <a name="input_config"></a> [config](#input\_config) | EC2 compute-provider configuration. Paths match `compute_provider.ec2` in the runner stack.<br/><br/>- `ami`: Optional AMI discovery and encryption configuration. Null selects defaults for `runner.os` and `runner.architecture`.<br/>- `ami.filter`: AMI filter names mapped to accepted values and merged over the provider defaults.<br/>- `ami.owners`: AWS account IDs or aliases allowed to own the selected AMI.<br/>- `ami.id_ssm_parameter`: Optional externally managed SSM parameter containing the AMI ID. Its object presence is the plan-time ownership discriminator.<br/>- `ami.id_ssm_parameter.arn`: ARN of the external AMI-ID parameter. The ARN may remain unknown until apply.<br/>- `ami.kms_key`: Optional customer-managed KMS key required for encrypted AMIs or snapshots. Its object presence is the plan-time policy discriminator.<br/>- `ami.kms_key.arn`: ARN of the AMI KMS key. The ARN may remain unknown until apply.<br/>- `vpc_id`: VPC in which runner networking resources are created.<br/>- `subnet_ids`: Subnets from which the control plane may launch runners.<br/>- `overrides.name_runner`: Optional Name tag override for runner compute resources.<br/>- `overrides.name_sg`: Optional Name tag override for the managed security group.<br/>- `instance_profile`: Optional externally managed instance profile. Its object presence is the plan-time ownership discriminator.<br/>- `instance_profile.name`: Name of the external instance profile. The name may remain unknown until apply.<br/>- `instance_profile_path`: IAM path for the provider-managed instance profile. Null derives the path from `prefix`.<br/>- `binaries_syncer.enabled`: Uses the synchronized runner distribution from S3 during bootstrap.<br/>- `binaries_syncer.s3`: S3 object containing the synchronized runner distribution. Required when synchronization is enabled.<br/>- `binaries_syncer.s3.arn`: Runner-distribution bucket ARN used by IAM policies.<br/>- `binaries_syncer.s3.id`: Runner-distribution bucket name used in the bootstrap URI.<br/>- `binaries_syncer.s3.key`: Runner-distribution object key.<br/>- `block_device_mappings`: EBS mappings added to the launch template.<br/>- `block_device_mappings[].delete_on_termination`: Deletes the volume when its runner terminates.<br/>- `block_device_mappings[].device_name`: Device name exposed to the runner instance.<br/>- `block_device_mappings[].encrypted`: Enables EBS encryption.<br/>- `block_device_mappings[].iops`: Provisioned IOPS for volume types that support configurable IOPS.<br/>- `block_device_mappings[].kms_key_id`: KMS key ID or ARN used to encrypt the volume.<br/>- `block_device_mappings[].snapshot_id`: Snapshot used to initialize the volume.<br/>- `block_device_mappings[].throughput`: Provisioned throughput for volume types that support it.<br/>- `block_device_mappings[].volume_initialization_rate`: Fixed initialization rate for supported snapshot-backed volumes.<br/>- `block_device_mappings[].volume_size`: EBS volume size in GiB.<br/>- `block_device_mappings[].volume_type`: EBS volume type.<br/>- `ebs_optimized`: Requests EBS-optimized instances.<br/>- `instance_target_capacity_type`: Primary capacity type, either `spot` or `on-demand`.<br/>- `instance_allocation_strategy`: EC2 Fleet allocation strategy.<br/>- `instance_type_priorities`: Optional numeric priorities keyed by instance type.<br/>- `instance_max_spot_price`: Optional maximum hourly Spot price.<br/>- `instance_types`: EC2 instance types available to the control plane.<br/>- `user_data`: Runner bootstrap user-data configuration.<br/>- `user_data.enabled`: Enables launch-template user data.<br/>- `user_data.template`: Optional path to a custom user-data template.<br/>- `user_data.content`: Optional complete user-data content used instead of a template.<br/>- `user_data.pre_install`: Script inserted before runner installation.<br/>- `user_data.post_install`: Script inserted after runner installation.<br/>- `user_data.debug_logging_enabled`: Enables verbose user-data tracing, which can expose secrets.<br/>- `ssm_enabled`: Includes Session Manager permissions in the provider's runner policy group.<br/>- `create_service_linked_role_spot`: Allows scale-up to create the EC2 Spot service-linked role.<br/>- `cloudwatch_agent.enabled`: Enables CloudWatch agent configuration for runner instances.<br/>- `cloudwatch_agent.config`: Optional complete CloudWatch agent configuration.<br/>- `managed_security_group_enabled`: Creates and attaches the provider-managed security group.<br/>- `log_files`: Optional files collected by the CloudWatch agent. Null uses provider defaults.<br/>- `log_files[].log_group_name`: CloudWatch log-group name before optional prefixing.<br/>- `log_files[].prefix_log_group`: Prefixes the log-group name with the runner stack path.<br/>- `log_files[].file_path`: File or glob read by the CloudWatch agent.<br/>- `log_files[].log_stream_name`: CloudWatch log-stream name template.<br/>- `log_files[].log_class`: CloudWatch log-group class for the collected file.<br/>- `key_name`: Optional EC2 key-pair name.<br/>- `additional_security_group_ids`: Existing security groups attached to runners.<br/>- `detailed_monitoring_enabled`: Enables detailed EC2 monitoring.<br/>- `egress_rules`: Rules created on the managed security group.<br/>- `egress_rules[].cidr_blocks`: IPv4 CIDR destinations.<br/>- `egress_rules[].ipv6_cidr_blocks`: IPv6 CIDR destinations.<br/>- `egress_rules[].prefix_list_ids`: AWS prefix-list destinations.<br/>- `egress_rules[].from_port`: First destination port in the permitted range.<br/>- `egress_rules[].protocol`: IP protocol name or number. Use `-1` for all protocols.<br/>- `egress_rules[].security_groups`: Destination security-group IDs.<br/>- `egress_rules[].self`: Allows traffic to the managed security group itself.<br/>- `egress_rules[].to_port`: Last destination port in the permitted range.<br/>- `egress_rules[].description`: Optional rule description.<br/>- `tags`: Runner instance, volume, network-interface, and eligible Spot-request tags. Provider-required bootstrap tags take final precedence.<br/>- `metadata_options`: Instance Metadata Service configuration.<br/>- `metadata_options.instance_metadata_tags`: Exposes instance tags through Instance Metadata Service when enabled.<br/>- `metadata_options.http_endpoint`: Enables or disables the Instance Metadata Service endpoint.<br/>- `metadata_options.http_tokens`: Controls whether IMDSv2 session tokens are optional or required.<br/>- `metadata_options.http_put_response_hop_limit`: Network hop limit for Instance Metadata Service token responses.<br/>- `credit_specification`: CPU credit mode for burstable instance types.<br/>- `cpu_options`: CPU topology and processor-feature configuration.<br/>- `cpu_options.core_count`: Number of CPU cores exposed to the runner instance.<br/>- `cpu_options.threads_per_core`: Number of hardware threads exposed per CPU core.<br/>- `cpu_options.amd_sev_snp`: Enables or disables AMD SEV-SNP on supported instance types.<br/>- `cpu_options.nested_virtualization`: Enables or disables nested virtualization on supported instance types.<br/>- `placement`: EC2 placement configuration.<br/>- `placement.affinity`: Dedicated Host affinity setting.<br/>- `placement.availability_zone`: Availability Zone in which runner instances are placed.<br/>- `placement.group_id`: Placement-group ID.<br/>- `placement.group_name`: Placement-group name.<br/>- `placement.host_id`: Dedicated Host ID.<br/>- `placement.host_resource_group_arn`: ARN of the host resource group used for placement.<br/>- `placement.spread_domain`: Spread-domain placement value.<br/>- `placement.tenancy`: Instance tenancy, such as `default`, `dedicated`, or `host`.<br/>- `placement.partition_number`: Placement-group partition number.<br/>- `license_specifications`: License Manager configurations added to the launch template.<br/>- `license_specifications[].license_configuration_arn`: ARN of an AWS License Manager license configuration.<br/>- `associate_public_ipv4_address`: Associates a public IPv4 address with runner network interfaces.<br/>- `enable_on_demand_failover_for_errors`: EC2 errors that trigger on-demand fallback after a Spot failure.<br/>- `scale_errors`: EC2 errors treated as retryable scale-up failures.<br/>- `use_dedicated_host`: Enables the dedicated-host launch path. | <pre>object({<br/> ami = optional(object({<br/> filter = optional(map(list(string)), { state = ["available"] })<br/> owners = optional(list(string), ["amazon"])<br/> id_ssm_parameter = optional(object({<br/> arn = string<br/> }), null)<br/> kms_key = optional(object({<br/> arn = string<br/> }), null)<br/> }), null)<br/> vpc_id = string<br/> subnet_ids = list(string)<br/> overrides = optional(object({<br/> name_runner = optional(string, "")<br/> name_sg = optional(string, "")<br/> }), {})<br/> instance_profile = optional(object({<br/> name = string<br/> }), null)<br/> instance_profile_path = optional(string, null)<br/> binaries_syncer = optional(object({<br/> enabled = optional(bool, true)<br/> s3 = optional(object({<br/> arn = string<br/> id = string<br/> key = string<br/> }), null)<br/> }), {})<br/> block_device_mappings = optional(list(object({<br/> delete_on_termination = optional(bool, true)<br/> device_name = optional(string, "/dev/xvda")<br/> encrypted = optional(bool, true)<br/> iops = optional(number)<br/> kms_key_id = optional(string)<br/> snapshot_id = optional(string)<br/> throughput = optional(number)<br/> volume_initialization_rate = optional(number)<br/> volume_size = number<br/> volume_type = optional(string, "gp3")<br/> })), [{ volume_size = 30 }])<br/> ebs_optimized = optional(bool, false)<br/> instance_target_capacity_type = optional(string, "spot")<br/> instance_allocation_strategy = optional(string, "lowest-price")<br/> instance_type_priorities = optional(map(number), null)<br/> instance_max_spot_price = optional(string, null)<br/> instance_types = list(string)<br/> user_data = optional(object({<br/> enabled = optional(bool, true)<br/> template = optional(string, null)<br/> content = optional(string, null)<br/> pre_install = optional(string, "")<br/> post_install = optional(string, "")<br/> debug_logging_enabled = optional(bool, false)<br/> }), {})<br/> ssm_enabled = optional(bool, false)<br/> create_service_linked_role_spot = optional(bool, false)<br/> cloudwatch_agent = optional(object({<br/> enabled = optional(bool, true)<br/> config = optional(string, null)<br/> }), {})<br/> managed_security_group_enabled = optional(bool, true)<br/> log_files = optional(list(object({<br/> log_group_name = string<br/> prefix_log_group = bool<br/> file_path = string<br/> log_stream_name = string<br/> log_class = optional(string, "STANDARD")<br/> })), null)<br/> key_name = optional(string, null)<br/> additional_security_group_ids = optional(list(string), [])<br/> detailed_monitoring_enabled = optional(bool, false)<br/> egress_rules = optional(list(object({<br/> cidr_blocks = list(string)<br/> ipv6_cidr_blocks = list(string)<br/> prefix_list_ids = list(string)<br/> from_port = number<br/> protocol = string<br/> security_groups = list(string)<br/> self = bool<br/> to_port = number<br/> description = string<br/> })), [{<br/> cidr_blocks = ["0.0.0.0/0"]<br/> ipv6_cidr_blocks = ["::/0"]<br/> prefix_list_ids = null<br/> from_port = 0<br/> protocol = "-1"<br/> security_groups = null<br/> self = null<br/> to_port = 0<br/> description = null<br/> }])<br/> tags = optional(map(string), {})<br/> metadata_options = optional(object({<br/> instance_metadata_tags = optional(string, "enabled")<br/> http_endpoint = optional(string, "enabled")<br/> http_tokens = optional(string, "required")<br/> http_put_response_hop_limit = optional(number, 1)<br/> }), {})<br/> credit_specification = optional(string, null)<br/> cpu_options = optional(object({<br/> core_count = optional(number)<br/> threads_per_core = optional(number)<br/> amd_sev_snp = optional(string)<br/> nested_virtualization = optional(string)<br/> }), null)<br/> placement = optional(object({<br/> affinity = optional(string)<br/> availability_zone = optional(string)<br/> group_id = optional(string)<br/> group_name = optional(string)<br/> host_id = optional(string)<br/> host_resource_group_arn = optional(string)<br/> spread_domain = optional(string)<br/> tenancy = optional(string)<br/> partition_number = optional(number)<br/> }), null)<br/> license_specifications = optional(list(object({<br/> license_configuration_arn = string<br/> })), [])<br/> associate_public_ipv4_address = optional(bool, false)<br/> enable_on_demand_failover_for_errors = optional(list(string), [])<br/> scale_errors = optional(list(string), [<br/> "UnfulfillableCapacity",<br/> "MaxSpotInstanceCountExceeded",<br/> "TargetCapacityLimitExceededException",<br/> "RequestLimitExceeded",<br/> "ResourceLimitExceeded",<br/> "MaxSpotInstanceCountExceeded",<br/> "MaxSpotFleetRequestCountExceeded",<br/> "InsufficientInstanceCapacity",<br/> "InsufficientCapacityOnHost",<br/> ])<br/> use_dedicated_host = optional(bool, false)<br/> })</pre> | n/a | yes |
0 commit comments