Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lbkolev/terraform-aws-eth-node
Spin up Ethereum execution/consensus clients on AWS.
https://github.com/lbkolev/terraform-aws-eth-node
aws ethereum ethereum-node terraform terraform-module
Last synced: 3 days ago
JSON representation
Spin up Ethereum execution/consensus clients on AWS.
- Host: GitHub
- URL: https://github.com/lbkolev/terraform-aws-eth-node
- Owner: lbkolev
- License: mit
- Created: 2023-09-06T16:54:14.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-01-31T09:08:54.000Z (10 months ago)
- Last Synced: 2024-01-31T10:28:06.800Z (10 months ago)
- Topics: aws, ethereum, ethereum-node, terraform, terraform-module
- Language: HCL
- Homepage:
- Size: 40 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
##
terraform-aws-eth-node
###Spin up Ethereum execution/consensus clients on AWS.
- The deployment takes no more than a minute
- All clients are managed through systemd- The module takes care of the:
- EC2's setup, configuration & lifecycle
- Creation & management of the volumes that'll hold the data- Full examples can be found in the [examples](./examples/) directory.
> :warning: Be mindful with the security group's configuration. All the examples are simplified to allow all external traffic, which in most cases isn't recommended.## License
MIT Licensed. See [LICENSE](./LICENSE) for full details.## Requirements
| Name | Version |
|------|---------|
| [terraform](#requirement\_terraform) | >= 1.0 |
| [aws](#requirement\_aws) | >= 5.0 |## Providers
| Name | Version |
|------|---------|
| [aws](#provider\_aws) | 5.30.0 |## Modules
No modules.
## Resources
| Name | Type |
|------|------|
| [aws_autoscaling_group.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/autoscaling_group) | resource |
| [aws_ebs_volume.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ebs_volume) | resource |
| [aws_iam_instance_profile.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_instance_profile) | resource |
| [aws_iam_role.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |
| [aws_launch_template.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/launch_template) | resource |
| [aws_security_group.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group) | resource |
| [aws_ami.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ami) | data source |
| [aws_iam_policy_document.attach_ebs_volume_policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
| [aws_iam_policy_document.policy_document](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
| [aws_subnet.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/subnet) | data source |## Inputs
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [ami](#input\_ami) | The base AMI to use for the Autoscaling grp |object({|
name = string
}){| no |
"name": "debian-12-amd64-20230711-1438"
}
| [clients](#input\_clients) | The list of ethereum clients to deploy |list(| n/a | yes |
object({
name = string # name of the ethereum client
package_url = string # link to the url of the binary to download
cmd = string # the startup command of the client
ebs = optional(object({
device_name = string
mountpoint = string
type = string
size = number
}))
}))
| [compute](#input\_compute) | The EC2 configuration |object({|
type = optional(string, "t2.micro")
state = optional(string, "running")
associate_public_ip_address = bool
security_group_ids = optional(list(string)) # external SGs;
ebs_optimized = optional(bool)
disable_api_stop = optional(bool)
disable_api_termination = optional(bool)
key_name = optional(string)
max_instance_lifetime = optional(number)
}){| no |
"associate_public_ip_address": true,
"state": "running",
"type": "t2.micro"
}
| [name](#input\_name) | The generic name to apply across the different resources | `string` | n/a | yes |
| [security\_group](#input\_security\_group) | The security group rules to apply to the Autoscaling grp |list(object({| `[]` | no |
type = string
description = optional(string)
from = number
to = number
protocol = string
cidr_blocks = list(string)
}))
| [subnet\_id](#input\_subnet\_id) | The subnet to deploy the Autoscaling grp in | `string` | n/a | yes |## Outputs
| Name | Description |
|------|-------------|
| [compute](#output\_compute) | Compute created for the client(s) |
| [ebs](#output\_ebs) | EBS volumes created for the client(s) |
| [security\_group](#output\_security\_group) | Security group created for the client(s) |