Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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.

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
})
|
{
"name": "debian-12-amd64-20230711-1438"
}
| no |
| [clients](#input\_clients) | The list of ethereum clients to deploy |
list(
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
}))
}))
| n/a | yes |
| [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)
})
|
{
"associate_public_ip_address": true,
"state": "running",
"type": "t2.micro"
}
| no |
| [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({
type = string
description = optional(string)
from = number
to = number
protocol = string
cidr_blocks = list(string)
}))
| `[]` | no |
| [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) |