Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jsiebens/terraform-aws-faasd
Terraform Module for how to deploy a faasd instance on Amazon Web Services
https://github.com/jsiebens/terraform-aws-faasd
amazon-web-services aws faasd openfaas serverless terraform terraform-module
Last synced: 16 days ago
JSON representation
Terraform Module for how to deploy a faasd instance on Amazon Web Services
- Host: GitHub
- URL: https://github.com/jsiebens/terraform-aws-faasd
- Owner: jsiebens
- Created: 2021-08-30T13:29:35.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-05-18T13:53:27.000Z (over 2 years ago)
- Last Synced: 2024-05-02T06:17:40.607Z (8 months ago)
- Topics: amazon-web-services, aws, faasd, openfaas, serverless, terraform, terraform-module
- Language: HCL
- Homepage:
- Size: 7.81 KB
- Stars: 2
- Watchers: 2
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# faasd for Amazon Web Services
This repo contains a Terraform Module for how to deploy a [faasd](https://github.com/openfaas/faasd) instance on the
[AWS](https://aws.amazon.com/) using [Terraform](https://www.terraform.io/).__faasd__, a lightweight & portable faas engine, is [OpenFaaS](https://github.com/openfaas/) reimagined, but without the cost and complexity of Kubernetes. It runs on a single host with very modest requirements, making it fast and easy to manage. Under the hood it uses [containerd](https://containerd.io/) and [Container Networking Interface (CNI)](https://github.com/containernetworking/cni) along with the same core OpenFaaS components from the main project.
## What's a Terraform Module?
A Terraform Module refers to a self-contained packages of Terraform configurations that are managed as a group. This repo
is a Terraform Module and contains many "submodules" which can be composed together to create useful infrastructure patterns.## How do you use this module?
This repository defines a [Terraform module](https://www.terraform.io/docs/modules/usage.html), which you can use in your
code by adding a `module` configuration and setting its `source` parameter to URL of this repository:```hcl
module "faasd" {
source = "github.com/jsiebens/terraform-aws-faasd"name = "faasd"
vpc_id = var.vpc_id
subnet_id = var.subnet_id
key_name = var.key_name
}
```## Requirements
| Name | Version |
|------|---------|
| terraform | >= 1.0.0 |
| aws | >= 3.30.0 |
| random | >= 3.1.0 |## Providers
| Name | Version |
|------|---------|
| aws | >= 3.30.0 |
| random | >= 3.1.0 |## Resources
| Name | Type |
|------|------|
| [aws_eip.faasd](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/eip) | resource |
| [aws_eip_association.faasd](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/eip_association) | resource |
| [aws_iam_instance_profile.faasd](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_instance_profile) | resource |
| [aws_iam_policy_attachment.faasd](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy_attachment) | resource |
| [aws_iam_role.faasd](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |
| [aws_instance.faasd](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance) | resource |
| [aws_security_group.faasd](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group) | resource |
| [random_password.faasd](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/password) | resource |
| [aws_ami.ubuntu](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ami) | data source |## Inputs
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| basic\_auth\_password | The basic auth password, if left empty, a random password is generated. | `string` | `null` | no |
| basic\_auth\_user | The basic auth user name. | `string` | `"admin"` | no |
| domain | A public domain for the faasd instance. This will the use of Caddy and a Let's Encrypt certificate | `string` | `""` | no |
| email | Email used to order a certificate from Let's Encrypt | `string` | `""` | no |
| instance\_type | The instance type to use for the instance. | `string` | `"t2.micro"` | no |
| key\_name | Key name of the Key Pair to use for the instance. | `string` | `null` | no |
| name | The name of the faasd instance. | `string` | n/a | yes |
| subnet\_id | VPC Subnet ID to launch in. | `string` | n/a | yes |
| tags | A map of tags to assign to the resource. | `map(string)` | `{}` | no |
| vpc\_id | VPC ID. | `string` | n/a | yes |## Outputs
| Name | Description |
|------|-------------|
| basic\_auth\_password | The basic auth password. |
| basic\_auth\_user | The basic auth user name. |
| gateway\_url | The url of the faasd gateway |
| ipv4\_address | The public IP address of the faasd instance |## See Also
- [faasd on Amazon Web Services with Terraform](https://github.com/jsiebens/terraform-aws-faasd)
- [faasd on Google Cloud Platform with Terraform](https://github.com/jsiebens/terraform-google-faasd)
- [faasd on Microsoft Azure with Terraform](https://github.com/jsiebens/terraform-azurerm-faasd)
- [faasd on DigitalOcean with Terraform](https://github.com/jsiebens/terraform-digitalocean-faasd)
- [faasd on Equinix Metal with Terraform](https://github.com/jsiebens/terraform-equinix-faasd)
- [faasd on Scaleway with Terraform](https://github.com/jsiebens/terraform-scaleway-faasd)