Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cruxstack/terraform-aws-eip-manager
Terraform module for a serverless service that actively and dynamically binds AWS Elastic IPs to EC2 instances
https://github.com/cruxstack/terraform-aws-eip-manager
aws-lambda eip elastic-ip elastic-ips network serverless sweetops terraform terraform-module utility vpc
Last synced: about 1 month ago
JSON representation
Terraform module for a serverless service that actively and dynamically binds AWS Elastic IPs to EC2 instances
- Host: GitHub
- URL: https://github.com/cruxstack/terraform-aws-eip-manager
- Owner: cruxstack
- License: mit
- Created: 2023-08-01T18:48:26.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-08-01T18:50:11.000Z (over 1 year ago)
- Last Synced: 2024-04-20T00:32:56.092Z (8 months ago)
- Topics: aws-lambda, eip, elastic-ip, elastic-ips, network, serverless, sweetops, terraform, terraform-module, utility, vpc
- Language: HCL
- Homepage: https://registry.terraform.io/modules/cruxstack/eip-manager/aws/latest
- Size: 17.6 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Terraform Module: AWS EIP Manager
This Terraform module deploys a service that manages the assignment of a pool of
Elastic IP (EIP) addresses to AWS EC2 instances. It's based on the [binxio/ec2-elastic-ip-manager](https://github.com/binxio/ec2-elastic-ip-manager)
service with a few modifications.The service operates by listening to EC2 instance state change notifications.
When an instance reaches the "running" state and is tagged with a specific pool
tag, the service assigns an available EIP from the pool to the instance. If an
instance is stopped or terminated, any EIPs associated with that instance are
disassociated, returning to the pool for use by other instances.### Features
- **Auto-Assignment of EIPs**: Automatically assigns Elastic IPs (EIPs) from a
defined pool to EC2 instances when they reach the "running" state.
- **Auto-Release of EIPs**: Automatically disassociates EIPs from instances when
they are stopped or terminated, returning the EIPs back to the pool.
- **Tag-Based EIP Pools**: Uses tags to define pools of EIPs. Each pool can have
multiple EIPs, and instances can be assigned an EIP from a specific pool based
on their tags.
- **Scalable**: Can manage multiple EIP pools, allowing for different sets of
instances to have their EIPs managed independently.
- **Robust Error Handling**: Includes error handling for API calls, ensuring
that the service continues to operate even when individual actions fail.## Usage
```hcl
module "eip_manager" {
source = "cruxstack/eip-manager/aws"
version = "x.x.x"pool_tag_key = "your-pool-tag-key"
pool_tag_values = ["your-pool-tag-value"]
}
```## Inputs
In addition to the variables documented below, this module includes several
other optional variables (e.g., `name`, `tags`, etc.) provided by the
`cloudposse/label/null` module. Please refer to the [`cloudposse/label` documentation](https://registry.terraform.io/modules/cloudposse/label/null/latest) for more details on these variables.| Name | Description | Type | Default | Required |
|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|----------------------|:--------:|
| `pool_tag_key` | Tag key used to identify the Elastic IPs (EIPs) that the EIP manager service can assign to EC2 instances. EIPs with this tag are considered part of the EIP pool. | `string` | `"eip-manager-pool"` | no |
| `pool_tag_values` | List of tag values that, when paired with the `pool_tag_key`, identifies the Elastic IPs that the EIP manager can assign. Each tag value defines a separate EIP pool. | `list(string)` | `["unset"]` | no |### Outputs
| Name | Description |
|-----------------------|-----------------------------------------------------------------|
| `lambda_function_arn` | The ARN of the EIP manager Lambda function |
| `iam_role_arn` | The ARN of the IAM role used by the EIP manager Lambda function |## Contributing
We welcome contributions to this project. For information on setting up a
development environment and how to make a contribution, see [CONTRIBUTING](./CONTRIBUTING.md)
documentation.