You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+47-40Lines changed: 47 additions & 40 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -58,6 +58,10 @@ Permission are managed on several places. Below the most important ones. For det
58
58
59
59
Besides these permissions, the lambdas also need permission to CloudWatch (for logging and scheduling), SSM and S3. For more details about the required permissions see the [documentation](./modules/setup-iam-permissions/README.md) of the IAM module which uses permission boundaries.
60
60
61
+
### ARM64 support via Graviton/Graviton2 instance-types
62
+
63
+
When using the default example or top-level module, specifying an `instance_type` that matches a Graviton/Graviton 2 (ARM64) architecture (e.g. a1 or any 6th-gen `g` or `gd` type), the sub-modules will be automatically configured to provision with ARM64 AMIs and leverage GitHub's ARM64 action runner. See below for more details.
64
+
61
65
## Usages
62
66
63
67
Examples are provided in [the example directory](examples/). Please ensure you have installed the following tools.
@@ -151,6 +155,8 @@ module "github-runner" {
151
155
}
152
156
```
153
157
158
+
**ARM64** support: Specify an `a1` or `*6g*` (6th-gen Graviton2) instance type to stand up an ARM64 runner, otherwise the default is x86_64.
159
+
154
160
2. Run terraform by using the following commands
155
161
156
162
```bash
@@ -223,58 +229,59 @@ The following sub modules are optional and are provided as example or utility:
223
229
-_[download-lambda](./modules/download-lambda/README.md)_ - Utility module to download lambda artifacts from GitHub Release
224
230
-_[setup-iam-permissions](./modules/setup-iam-permissions/README.md)_ - Example module to setup permission boundaries
225
231
226
-
<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
227
-
## Requirements
232
+
### ARM64 configuration for submodules
228
233
229
-
No requirements.
234
+
When not using the top-level module and specifying an `a1` or `*6g*` (6th-gen Graviton2) `instance_type`, the `runner-binaries-syncer` and `runners` submodules need to be configured appropriately for pulling the ARM64 GitHub action runner binary and leveraging the arm64 AMI for the runners.
230
235
231
-
## Providers
236
+
When configuring `runner-binaries-syncer`
232
237
233
-
| Name | Version |
234
-
|------|---------|
235
-
| aws | n/a |
236
-
| random | n/a |
238
+
-_runner_architecture_ - set to `arm64`, defaults to `x64`
237
239
240
+
When configuring `runners`
241
+
242
+
-_ami_filter_ - set to `["amzn2-ami-hvm-2*-arm64-gp2"]`, defaults to `["amzn2-ami-hvm-2.*-x86_64-ebs"]`
243
+
244
+
<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK -->
238
245
## Inputs
239
246
240
247
| Name | Description | Type | Default | Required |
| encrypt\_secrets | Encrypt secret variables for lambda's such as secrets and private keys. |`bool`|`true`| no |
245
-
| environment | A name that identifies the environment, used as prefix and for tagging. |`string`| n/a | yes |
246
-
| github\_app | GitHub app parameters, see your github app. Ensure the key is base64 encoded. |<pre>object({<br> key_base64 = string<br> id = string<br> client_id = string<br> client_secret = string<br> webhook_secret = string<br> })</pre>| n/a | yes |
247
-
| instance\_profile\_path | The path that will be added to the instance\_profile, if not set the environment name will be used. |`string`|`null`| no |
248
-
| instance\_type | Instance type for the action runner. |`string`|`"m5.large"`| no |
249
-
| kms\_key\_id | Custom KMS key to encrypted lambda secrets, if not provided and `encrypt_secrets` = `true` a KMS key will be created by the module. Secrets will be encrypted with a context `Environment = var.environment`. |`string`|`null`| no |
250
-
| manage\_kms\_key | Let the module manage the KMS key. |`bool`|`true`| no |
251
-
| minimum\_running\_time\_in\_minutes | The time an ec2 action runner should be running at minimum before terminated if non busy. |`number`|`5`| no |
252
-
| role\_path | The path that will be added to role path for created roles, if not set the environment name will be used. |`string`|`null`| no |
253
-
| role\_permissions\_boundary | Permissions boundary that will be added to the created roles. |`string`|`null`| no |
254
-
| runner\_as\_root | Run the action runner under the root user. |`bool`|`false`| no |
255
-
| runner\_binaries\_syncer\_lambda\_timeout | Time out of the binaries sync lambda in seconds. |`number`|`300`| no |
256
-
| runner\_binaries\_syncer\_lambda\_zip | File location of the binaries sync lambda zip file. |`string`|`null`| no |
257
-
| runner\_extra\_labels | Extra labels for the runners (GitHub). Separate each label by a comma |`string`|`""`| no |
258
-
| runners\_lambda\_zip | File location of the lambda zip file for scaling runners. |`string`|`null`| no |
259
-
| runners\_maximum\_count | The maximum number of runners that will be created. |`number`|`3`| no |
260
-
| runners\_scale\_down\_lambda\_timeout | Time out for the scale up lambda in seconds. |`number`|`60`| no |
261
-
| runners\_scale\_up\_lambda\_timeout | Time out for the scale down lambda in seconds. |`number`|`60`| no |
262
-
| scale\_down\_schedule\_expression | Scheduler expression to check every x for scale down. |`string`|`"cron(*/5 * * * ? *)"`| no |
263
-
| subnet\_ids | List of subnets in which the action runners will be launched, the subnets needs to be subnets in the `vpc_id`. |`list(string)`| n/a | yes |
264
-
| tags | Map of tags that will be added to created resources. By default resources will be tagged with name and environment. |`map(string)`|`{}`| no |
265
-
| userdata\_post\_install | Script to be ran after the GitHub Actions runner is installed on the EC2 instances |`string`|`""`| no |
266
-
| userdata\_pre\_install | Script to be ran before the GitHub Actions runner is installed on the EC2 instances |`string`|`""`| no |
267
-
| vpc\_id | The VPC for security groups of the action runners. |`string`| n/a | yes |
268
-
| webhook\_lambda\_timeout | Time out of the webhook lambda in seconds. |`number`|`10`| no |
269
-
| webhook\_lambda\_zip | File location of the webhook lambda zip file. |`string`|`null`| no |
| encrypt\_secrets | Encrypt secret variables for lambda's such as secrets and private keys. | bool |`"true"`| no |
252
+
| environment | A name that identifies the environment, used as prefix and for tagging. | string | n/a | yes |
253
+
| github\_app | GitHub app parameters, see your github app. Ensure the key is base64 encoded. | object | n/a | yes |
254
+
| instance\_profile\_path | The path that will be added to the instance\_profile, if not set the environment name will be used. | string |`"null"`| no |
255
+
| instance\_type | Instance type for the action runner. | string |`"m5.large"`| no |
256
+
| kms\_key\_id | Custom KMS key to encrypted lambda secrets, if not provided and `encrypt\_secrets` = `true` a KMS key will be created by the module. Secrets will be encrypted with a context `Environment = var.environment`. | string |`"null"`| no |
257
+
| manage\_kms\_key | Let the module manage the KMS key. | bool |`"true"`| no |
258
+
| minimum\_running\_time\_in\_minutes | The time an ec2 action runner should be running at minimum before terminated if non busy. | number |`"5"`| no |
259
+
| role\_path | The path that will be added to role path for created roles, if not set the environment name will be used. | string |`"null"`| no |
260
+
| role\_permissions\_boundary | Permissions boundary that will be added to the created roles. | string |`"null"`| no |
261
+
| runner\_as\_root | Run the action runner under the root user. | bool |`"false"`| no |
262
+
| runner\_binaries\_syncer\_lambda\_timeout | Time out of the binaries sync lambda in seconds. | number |`"300"`| no |
263
+
| runner\_binaries\_syncer\_lambda\_zip | File location of the binaries sync lambda zip file. | string |`"null"`| no |
264
+
| runner\_extra\_labels | Extra labels for the runners \(GitHub\). Separate each label by a comma | string |`""`| no |
265
+
| runners\_lambda\_zip | File location of the lambda zip file for scaling runners. | string |`"null"`| no |
266
+
| runners\_maximum\_count | The maximum number of runners that will be created. | number |`"3"`| no |
267
+
| runners\_scale\_down\_lambda\_timeout | Time out for the scale up lambda in seconds. | number |`"60"`| no |
268
+
| runners\_scale\_up\_lambda\_timeout | Time out for the scale down lambda in seconds. | number |`"60"`| no |
269
+
| scale\_down\_schedule\_expression | Scheduler expression to check every x for scale down. | string |`"cron(*/5 * * * ? *)"`| no |
270
+
| subnet\_ids | List of subnets in which the action runners will be launched, the subnets needs to be subnets in the `vpc\_id`. | list(string) | n/a | yes |
271
+
| tags | Map of tags that will be added to created resources. By default resources will be tagged with name and environment. | map(string) |`{}`| no |
272
+
| userdata\_post\_install | Script to be ran after the GitHub Actions runner is installed on the EC2 instances | string |`""`| no |
273
+
| userdata\_pre\_install | Script to be ran before the GitHub Actions runner is installed on the EC2 instances | string |`""`| no |
274
+
| vpc\_id | The VPC for security groups of the action runners. | string | n/a | yes |
275
+
| webhook\_lambda\_timeout | Time out of the webhook lambda in seconds. | number |`"10"`| no |
276
+
| webhook\_lambda\_zip | File location of the webhook lambda zip file. | string |`"null"`| no |
0 commit comments