Pre-built Oracle Linux 9 AMI with GitHub Actions Runner 2.335.1 installed, automatic root filesystem resizing, and Terraform-based ephemeral runner provisioning for DevOps teams.
This Amazon Machine Image (AMI) from Technology Leadership Corporation (TLC) provides a lean, production-ready Oracle Linux 9 environment with GitHub Actions Runner 2.333.0 pre-installed. Designed for DevOps teams seeking efficient self-hosted runner infrastructure on AWS, this AMI eliminates manual setup steps and reduces costly disk I/O operations.
Key Capabilities
Pre-Installed GitHub Actions Runner 2.333.0
The full 1GB GitHub Actions Runner installation is ready under /home/gh-runner. When adding a new self-hosted runner, you skip the download and installer steps entirely. Simply run the ./config.sh and ./run.sh commands provided by the GitHub UI's "Add Runner" button. This saves time and reduces expensive AWS disk I/O charges associated with downloading and extracting runner packages on every new instance.
Automatic Root Filesystem Resizing
Unlike standard Oracle Linux 9 images where cloud-init cannot automatically resize the root volume, this AMI includes TLC's custom rc-local.service. The AMI starts with a lean 14GB root filesystem that boots in approximately one minute with 6GB free. Need more space? Specify a larger volume size at boot and it expands automatically on first boot or any subsequent boot where the volume exceeds 14GB.
SELinux Ready
The server launches in SELinux Permissive mode. Toggle to Enforcing mode by adding "setenforce 1" to your EC2 Instance User-Data before launch.
The TLC Terraform plan called tf-files is a modern alternative to expensive platform-in-a-platform solutions like Kubernetes for provisioning GitHub Actions runners. It provides a hybrid ephemeral/long-running solution that is triggered by actual repository events rather than unrelated auto-scaling metrics.
What tf-files Creates:
A complete new VPC with all subnets, routes, internet gateway, security groups, and IAM policies
A GitHub Webhook for your repository
AWS Lambda components that dynamically create runners on a git push event
The GitHub Action workflow, user-data scripts, and runner hooks for complete lifecycle management
How It Works:
When a commit occurs, the GitHub Webhook triggers AWS Lambda via Lambda URL. The Lambda function runs boto3 to stand up a new GitHub Actions runner dynamically. The runner registers and becomes available in 90 to 120 seconds from webhook request. At job completion, the runner instance is automatically destroyed.
Why This Approach Is Superior:
No Kubernetes control plane running 24/7 that you are always paying for
No auto-scaling groups with triggers unrelated to your actual workflows
No streaming telemetry infrastructure, EventBridge rules, or Step Functions chains
No container registries, Helm charts, FluxCD, or ArgoCD deployments
Runners provision only when needed - on a git push - not on a schedule or threshold
Spot instances supported for cost savings; on-demand supported for stability
Each job gets an assigned runner when maximum runner count is set high
Comparison to Kubernetes-Based Runners:
Kubernetes triggers on a dead pod. tf-files triggers on the push itself. With Kubernetes, worker nodes need pre-provisioned large disks that run all day whether used or not. With tf-files, instances are truly ephemeral and only exist when developers need them. No cluster multiplication across environments, no shared cluster conflicts with other departments.
AWS Integration
EBS-backed HVM image optimized for AWS
Works with EC2 spot and on-demand instances
Lambda-based dynamic provisioning requires no additional compute infrastructure
Compatible with standard EC2 launch workflows and SSH key authentication
Terraform plan creates all required AWS networking and IAM resources automatically
Getting Started
Select this AMI in AWS Marketplace and launch it like any other AMI. Ensure you use a valid SSH key if you are not using the tf-files Terraform plan. For the full dynamic provisioning experience, download tf-files from the TLC GitHub repository and follow the included README.
GitHub Actions Runner 2.335.1 pre-installed and ready to configure - no download or installer steps required. The full 1GB runner installation lives under /home/gh-runner, saving time and reducing expensive AWS disk I/O charges on every new instance. Simply run the config and run commands from the GitHub UI to register your self-hosted runner immediately. Evaluate by launching on a small instance type to validate the workflow before scaling.
Automatic root filesystem resizing via TLC's custom rc-local.service solves a limitation of standard Oracle Linux 9 images where cloud-init cannot resize the root volume. Starts with a lean 14GB root that boots in about one minute with 6GB free. Specify a larger volume at launch and it expands automatically. Built with a minimal attack surface - key-based SSH only, no default passwords, restricted network services, and SELinux ready in Permissive or Enforcing mode.
Includes the Tf-files Terraform plan for dynamic ephemeral runner provisioning triggered by GitHub Webhooks, AWS Lambda, and optional Datadog. No Kubernetes clusters, auto-scaling groups, or streaming telemetry required. Runners provision in 90 to 120 seconds on git push (a few minutes longer if you opt-in to Datadog) and self-terminate at job completion. Supports resizing root volume, both spot and on-demand instances, most instance sizes, and lifecycle based on push trigger and job queue.
AWS Marketplace now accepts line of credit payments through the PNC Vendor Finance program. This program is available to select AWS customers in the US, excluding NV, NC, ND, TN, & VT.
Pricing is based on actual usage, with charges varying according to how much you consume. Subscriptions have no end date and may be canceled any time. Alternatively, you can pay upfront for a contract, which typically covers your anticipated usage for the contract duration. Any usage beyond contract will incur additional usage-based costs.
Additional AWS infrastructure costs may apply. Use the AWS Pricing Calculator to estimate your infrastructure costs.
If you are an AWS Free Tier customer with a free plan, you are eligible to subscribe to this offer. You can use free credits to cover the cost of eligible AWS infrastructure. See AWS Free Tier for more details. If you created an AWS account before July 15th, 2025, and qualify for the Legacy AWS Free Tier, Amazon EC2 charges for Micro instances are free for up to 750 hours per month. See Legacy AWS Free Tier for more details.
You pay by the hour for the software running on your chosen EC2 instance type. Each dimension maps to one instance size, so pricing scales with the compute, memory, storage, and accelerator capacity you select. Smaller shared and burstable types cost less per hour, while larger compute, memory, storage, GPU, and bare-metal types cost more. You are not locked into one size; you pick the instance that fits each workload. Because billing is usage-based, you pay only for the hours each instance runs. This suits the dynamic, spot or on-demand runner model the AMI supports.
Top-of-mind questions for buyers
What software comes pre-installed on the instance I pay for by the hour?
You get an Oracle Linux 9 image with the GitHub Actions self-hosted runner already installed under the gh-runner user, plus Python 3.11 and cloud-init. The runner software is over 1GB, so you skip downloading and installing it each time you register a new runner.
Am I charged when a runner instance is stopped or terminated by spot capacity loss?
Hourly software charges accrue only while an instance runs. When a runner shuts down or a spot instance is terminated for lack of capacity, software charges stop. The dynamic runner model starts an instance on a code push and terminates it at job completion, so you pay for active runner time.
Does the hourly price cover the AWS instance itself, or just the software?
The listed hourly rate is the software charge tied to your chosen instance type. AWS bills the underlying EC2 compute and storage separately. The root volume starts lean at 14GB and expands automatically if you set a larger size at boot, which affects your AWS storage costs, not the software rate.
technology-leadership.com
Helpful?
Vendor refund policy
We do not offer refunds on paid hourly or yearly purchases. You may cancel hourly charges at any time to avoid future charges.
How can we make this page better?
Tell us how we can improve this page, or report an issue with this product.
Give us feedbackReport a problem with this product or seller
Legal
Vendor terms and conditions
Upon subscribing to this product, you must acknowledge and agree to the terms and conditions outlined in the vendor's End User License Agreement (EULA).
Content disclaimer
Vendors are responsible for their product descriptions and other product content. AWS does not warrant that vendors' product descriptions or other product content are accurate, complete, reliable, current, or error-free.
An AMI is a virtual image that provides the information required to launch an instance. Amazon EC2 (Elastic Compute Cloud) instances are virtual servers on which you can run your applications and workloads, offering varying combinations of CPU, memory, storage, and networking resources. You can launch as many instances from as many different AMIs as you need.
Version release notes
Oracle Linux 9.8 with Github runner version v2.336.0 pre-installed. Save 2 minutes of time, instance cost and to download and install latest GH runner version on every launch.
Additional details
Usage instructions
To connect to the operating system, use SSH. the keypair you specified at launch, and the username ec2-user
Switch to root user with 'sudo su -'
Support
Vendor support
Contact and Support
For questions, support requests, or to engage Technology Leadership Corporation (TLC) for short, medium, or long-term contracts to enhance your real-time provisioning infrastructure, contact TLC via email at asimon@technology-leadership.com.
Support Scope
TLC provides support for AMI boot and configuration issues, GitHub Actions Runner registration, and the tf-files Terraform plan including webhook setup, Lambda provisioning, and IAM policy configuration.
Documentation and Self-Service Resources
The tf-files Terraform plan includes a comprehensive README with setup and configuration instructions covering prerequisites, step-by-step deployment, and troubleshooting. Source code and documentation are available at the TLC GitHub repository: https://github.com/AndrewSimon/tf-files/tree/workflow
Getting Started Steps
Single Runner Path:
Launch the AMI with a valid SSH key pair
SSH into the instance
Navigate to /home/gh-runner
Run ./config.sh with your repository URL and runner token from GitHub Settings
Run ./run.sh to start the runner
Ephemeral Provisioning Path (tf-files):
Clone the tf-files repository
Configure your GitHub Personal Access Token and AWS credentials
Run terraform init and terraform apply
The plan creates VPC, Lambda, webhook, and IAM resources automatically
Push a commit to trigger dynamic runner provisioning
For refund requests, contact TLC via the email address above with your AWS account ID and subscription details.
AWS infrastructure support
AWS Support is a one-on-one, fast-response support channel that is staffed 24x7x365 with experienced and technical support engineers. The service helps customers of all sizes and technical abilities to successfully utilize the products and features provided by Amazon Web Services.
TAM Learning Credits (TLC) provide easy access to training and certification products for your entire organization from multiple vendors in the form of TAM Learning Credits.
Data of trips taken by taxis and for-hire vehicles in New York City. Note: access to this dataset is free, however direct S3 access does require an AWS account. Anonymous downloads are accessible from the dataset's documentation webpage listed below.
Be the first to review this product. We've partnered with PeerSpot to gather customer feedback. You can share your experience by writing or recording a review, or scheduling a call with a PeerSpot analyst.