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
+49-42Lines changed: 49 additions & 42 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.
@@ -94,9 +98,9 @@ Go to GitHub and create a new app. Beware you can create apps your organization
94
98
First you need to download the lambda releases. The lambda code is available as a GitHub release asset. Downloading can be done with the provided terraform module for example. Note that this requires `curl` to be installed on your machine. Create an empty workspace with the following terraform code:
**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
233
+
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.
228
235
229
-
No requirements.
236
+
When configuring `runner-binaries-syncer`
230
237
231
-
## Providers
238
+
-_runner_architecture_ - set to `arm64`, defaults to `x64`
232
239
233
-
| Name | Version |
234
-
|------|---------|
235
-
| aws | n/a |
236
-
| random | n/a |
240
+
When configuring `runners`
237
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 aapp. 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 minium 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\_maxiumum\_count | The maxiumum number of runners tha 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 wehbook 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 |
Copy file name to clipboardExpand all lines: examples/default/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ This modules shows how to create GitHub action runners. Lambda release will be d
4
4
5
5
## Usages
6
6
7
-
Steps for the full setup, such as creating a GitHub app can be found in the root module's [README](../../README.md). First download the Lambda releases from GitHub. Alternatively you can build the lamdas locally with Node or Docker, there is a simple build script in `<root>/.ci/build.sh`. In the `main.tf` you can simple remove the location of the lambda zip files, the default location will work in this case.
7
+
Steps for the full setup, such as creating a GitHub app can be found in the root module's [README](../../README.md). First download the Lambda releases from GitHub. Alternatively you can build the lambdas locally with Node or Docker, there is a simple build script in `<root>/.ci/build.sh`. In the `main.tf` you can simple remove the location of the lambda zip files, the default location will work in this case.
0 commit comments