Stack configuration
The CloudFormation stack that RunsOn creates when installing the service has many parameters. This page lists them all and describes what each one does.
To update a parameter, simply follow the instructions in the Upgrade guide and update the parameter in the CloudFormation interface.
GithubOrganization
Type: String
Description: For instance if your GitHub organization lives at github.com/my-org, then the value of this parameter should be: my-org
MinLength: 1
LicenseKey
Type: String
Description:
License key for RunsOn, either as a string or SSM parameter ARN (with the format arn:aws:ssm:REGION:ACCOUNT:parameter/STACK_NAME/license-key
). Get one at https://runs-on.com/pricing ↗.
MinLength: 1
EmailAddress
Type: String
Description: Email address for cost and alert reports. You must confirm the subscription by clicking the link in the email that you will receive after creating the stack.
MinLength: 1
Environment
Type: String
Default: production
MinLength: 1
Description:
Environment for the RunsOn service: you can create multiple RunsOn installations and set this parameter to different values. And then target a single installation by setting the env=ENV_NAME
label in the runs-on:
definition in your GitHub Actions workflow. If no env
label is set in job definitions, the production
environment is targeted, so make sure to keep this default value if you only have one RunsOn installation.
AlertTopicSubscriptionHttpsEndpoint
Type: String
Description: HTTPS endpoint for cost and alert reports.
Default:
VpcCidrBlock
Type: String
Description: CIDR block for the VPC. Updating this value after creation will require deleting the stack and recreating it.
Default: 10.1.0.0/16
VpcCidrSubnetBits
Type: Number
Description: Number of bits to allocate for the subnet. For example, if you specify VpcCidrBlock to a /16 (the default), and this value to 12 (the default), you will have 4 bits, i.e. max 16 subnets in the VPC. Updating this value after creation will require deleting the stack and recreating it.
Default: 12
MinValue: 9
MaxValue: 16
Ipv6Enabled
Type: String
Default: false
AllowedValues:
- “true"
- "false”
Description: Enable or disable IPv6 for runners. Disabling ipv6 might help with Docker Hub rate limiting issues.
SSHAllowed
Type: String
Default: true
AllowedValues:
- “true"
- "false”
Description: Allow inbound SSH connections from the specified CIDR range to the runners.
SSHCidrRange
Type: String
Default: 0.0.0.0/0
Description: CIDR range for inbound SSH access. By default, only repository collaborators with admin permission will be able to SSH into the runner instances.
MinLength: 1
Private
Type: String
Default: false
AllowedValues:
- “only"
- "always"
- "true"
- "false”
Description:
Enable (‘true’, ‘always’, ‘only’) or disable (‘false’) private networking. If ‘true’, your jobs can opt-in to launch in private subnets with the private=true
label, and they will get a static egress IP. If ‘always’, all jobs will run in private subnets, and they will all get a static egress IP, unless you manually opt-out in your job definition with the private=false
label. If ‘only’, then jobs can only launch in private subnets. Note that enabling it will create 1 managed NAT gateway, with the corresponding costs. More details at https://runs-on.com/networking/static-ips/ ↗.
NatGatewayElasticIPCount
Type: Number
Default: 1
MinValue: 1
MaxValue: 8
Description: Number of Elastic IPv4s to attach to each NAT Gateway (if Private mode is enabled). Defaults to 1. Maximum of 8. Increasing this number is useful if you launch a large number of runners and are rate-limited by some external services due to the limited number of NAT Gateway IP addresses. Incurs ~$3.6/month additional cost for each Elastic IP. Note that by default you are limited to 2 EIPs per NAT gateway, but can request a quota increase from AWS.
NatGatewayAvailability
Type: String
Default: SingleAZ
AllowedValues:
- SingleAZ
- MultiAZ
VpcFlowLogFormat
Type: String
Default:
Description: VPC Flow Log format. If blank, the default format will be used. More details at https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-logs-fields ↗
VpcFlowLogS3BucketArn
Type: String
Default:
Description: ARN of an S3 bucket to send VPC Flow Logs to in addition to the default CloudWatch logs group. If blank, the logs will only be sent to CloudWatch Logs.
VpcFlowLogRetentionInDays
Type: Number
Default: 7
MinValue: 1
Description: Retention period in days for VPC Flow Logs.
DefaultPermissionBoundaryArn
Type: String
Default:
Description: ARN of an IAM policy that will be assigned as permission boundary to roles created by the stack. If blank, the roles will not have a permission boundary.
DefaultAdmins
Type: String
Default:
Description: Comma-separated list of GitHub usernames that will always be granted SSH access to all the runner instances (if SSH access is enabled), in addition to any repository admins. If blank, only repository collaborators with admin permission will be able to SSH into the runner instances.
AppEc2QueueSize
Type: Number
Default: 2
MinValue: 1
Description: Rate limit for launching instances, per second. New AWS accounts come with a default of 2 RunInstances call/s, so only increase this if you have requested a higher limit from AWS (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/throttling.html ↗).
AppAlarmDailyMinutes
Type: Number
Default: 4000
Description: Trigger an alarm if the cumulative number of minutes consumed during a day is over that number.
AppCPU
Type: Number
AllowedValues:
- 256
- 512
- 1024
- 2048
- 4096
Default: 256
Description: CPU units for RunsOn service (256 or higher). You might only need to change this if you have 10k+ jobs per day.
AppMemory
Type: Number
AllowedValues:
- 512
- 1024
- 2048
- 3072
- 4096
- 6144
- 8192
Default: 512
Description: Memory in MB for RunsOn service (512 or higher). You might only need to change this if you have 10k+ jobs per day.
AppRegistry
Type: String
Default: public.ecr.aws/c5h5o9k1/runs-on/runs-on
Description: Docker image (public) registry for the RunsOn service.
EncryptEbs
Type: String
Default: false
AllowedValues:
- “true"
- "false”
Description: Encrypt the EBS volumes of the runner instances. Encryption will slow the boot time of runner instances by ~10s.
RunnerDefaultDiskSize
Type: Number
Default: 40
MinValue: 40
Description: Disk size in GB for default runners.
RunnerDefaultVolumeThroughput
Type: Number
Default: 400
MinValue: 125
MaxValue: 1000
Description: Volume throughput in MiB/s for default runners (helps with faster boot times, but costs more).
RunnerLargeDiskSize
Type: Number
Default: 80
MinValue: 40
Description: Disk size in GB for large runners.
RunnerLargeVolumeThroughput
Type: Number
Default: 750
MinValue: 125
MaxValue: 1000
Description: Volume throughput in MiB/s for large runners (helps with faster boot times, but costs more).
RunnerCustomTags
Type: CommaDelimitedList
Default:
Description:
Optional custom tags for the runner instances (e.g. ‘key1=value1,key2=value2’). Tag keys cannot start with runs-on
, and can only use letters (a-z, A-Z), numbers (0-9), and the following characters: + - = . , _ : @ (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#tag-restrictions ↗)
CostReportsEnabled
Type: String
Default: true
AllowedValues:
- “true"
- "false”
Description: Enable or disable cost reports sent by email.
EC2InstanceCustomPolicy
Type: String
Default:
Description: Optional managed IAM Policy ARN to assign to the EC2 runner instances.
ECInstanceDetailedMonitoring
Type: String
Default: false
AllowedValues:
- “true"
- "false”
Description: Enable or disable detailed monitoring for EC2 instances (can incur additional costs).
Ec2LogRetentionInDays
Type: Number
Default: 7
MinValue: 1
Description: Retention period in days for EC2 instance logs.
ServerPassword
Type: String
Default:
Description: Password for the RunsOn server (/metrics endpoint). If blank, the endpoint(s) will be disabled.
CostAllocationTag
Type: String
Default: stack
Description: Cost allocation tag to use for all the deployed resources. Updating this after creation will require deleting the stack and recreating it.