Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jobcespedes/terraform-libvirt-fcos-storj-node
Terraform module for creating a Storj Node using Fedora CoreOS, Podman and Libvirt.
https://github.com/jobcespedes/terraform-libvirt-fcos-storj-node
fedora-coreos libvirt podman storj storj-node terraform
Last synced: about 2 months ago
JSON representation
Terraform module for creating a Storj Node using Fedora CoreOS, Podman and Libvirt.
- Host: GitHub
- URL: https://github.com/jobcespedes/terraform-libvirt-fcos-storj-node
- Owner: jobcespedes
- License: apache-2.0
- Created: 2023-04-27T18:08:26.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-12-15T21:06:25.000Z (about 1 year ago)
- Last Synced: 2024-10-12T10:09:23.472Z (3 months ago)
- Topics: fedora-coreos, libvirt, podman, storj, storj-node, terraform
- Language: HCL
- Homepage:
- Size: 54.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Terraform module for creating a [Storj Node](https://www.storj.io/node/) using [Fedora CoreOS](https://docs.fedoraproject.org/en-US/fedora-coreos/), [Podman](https://podman.io/) and [Libvirt](https://libvirt.org/).
## Dependencies
The following are the dependencies to create the VM with this module:
* [libvirt](https://libvirt.org/)## Prerequisites
- Steps 1 to 5 from [storj node setup](https://docs.storj.io/node/setup), including [storj node identity](https://docs.storj.io/node/dependencies/identity) to then pass the correspondeing certificates and keys to the module variables.## Requirements
| Name | Version |
| ------------------------------------------------------------------------- | -------- |
| [terraform](#requirement\_terraform) | >= 1.2.0 |
| [ct](#requirement\_ct) | 0.11.0 |
| [libvirt](#requirement\_libvirt) | ~> 0.7 |## Providers
| Name | Version |
| ---------------------------------------------------------------- | ------- |
| [template](#provider\_template) | n/a |## Modules
| Name | Source | Version |
| ------------------------------------------------ | ------------------------ | ------- |
| [fcos](#module\_fcos) | krestomatio/fcos/libvirt | 0.0.9 |## Resources
| Name | Type |
| ------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| [template_file.butane_snippet_install_storj_node](https://registry.terraform.io/providers/hashicorp/template/latest/docs/data-sources/file) | data source |## Inputs
| Name | Description | Type | Default | Required |
| ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------- | :------: |
| [address](#input\_address) | Storj address/public ip | `string` | n/a | yes |
| [autostart](#input\_autostart) | Autostart with libvirt host | `bool` | `null` | no |
| [cidr\_ip\_address](#input\_cidr\_ip\_address) | CIDR IP Address. Ex: 192.168.1.101/24 | `string` | `null` | no |
| [cpu\_mode](#input\_cpu\_mode) | Libvirt default cpu mode for VMs | `string` | `null` | no |
| [data\_volume\_pool](#input\_data\_volume\_pool) | Node default data volume pool | `string` | `null` | no |
| [data\_volume\_size](#input\_data\_volume\_size) | Node default data volume size in bytes | `number` | `null` | no |
| [email](#input\_email) | Operator's email | `string` | n/a | yes |
| [etc\_hosts](#input\_etc\_hosts) | /etc/host list |list(| `null` | no |
object(
{
ip = string
hostname = string
fqdn = string
}
)
)
| [etc\_hosts\_extra](#input\_etc\_hosts\_extra) | /etc/host extra block | `string` | `null` | no |
| [extra\_parameters](#input\_extra\_parameters) | List of extra paramenters appending when running storagenode container | `list(string)` | `[]` | no |
| [fqdn](#input\_fqdn) | Node FQDN | `string` | n/a | yes |
| [identity\_key](#input\_identity\_key) | Identity key. It should be previously [generated following docs](https://docs.storj.io/node/dependencies/identity) | `string` | n/a | yes |
| [ignition\_pool](#input\_ignition\_pool) | Default ignition files pool | `string` | `null` | no |
| [keymap](#input\_keymap) | Keymap | `string` | `null` | no |
| [log\_level](#input\_log\_level) | Operator's wallet | `string` | `null` | no |
| [log\_volume\_pool](#input\_log\_volume\_pool) | Node default log volume pool | `string` | `null` | no |
| [log\_volume\_size](#input\_log\_volume\_size) | Node default log volume size in bytes | `number` | `null` | no |
| [mac](#input\_mac) | Mac address | `string` | `null` | no |
| [memory](#input\_memory) | Node default memory in MiB | `number` | `512` | no |
| [nameservers](#input\_nameservers) | List of nameservers for VMs | `list(string)` |[| no |
"8.8.8.8"
]
| [network\_bridge](#input\_network\_bridge) | Libvirt default network bridge name for VMs | `string` | `null` | no |
| [network\_id](#input\_network\_id) | Libvirt default network id for VMs | `string` | `null` | no |
| [network\_name](#input\_network\_name) | Libvirt default network name for VMs | `string` | `null` | no |
| [port](#input\_port) | Storj node port | `number` | `28967` | no |
| [rollout\_wariness](#input\_rollout\_wariness) | Wariness to update, 1.0 (very cautious) to 0.0 (very eager) | `string` | `null` | no |
| [root\_base\_volume\_name](#input\_root\_base\_volume\_name) | Node default base root volume name | `string` | n/a | yes |
| [root\_base\_volume\_pool](#input\_root\_base\_volume\_pool) | Node default base root volume pool | `string` | `null` | no |
| [root\_volume\_pool](#input\_root\_volume\_pool) | Node default root volume pool | `string` | `null` | no |
| [root\_volume\_size](#input\_root\_volume\_size) | Node default root volume size in bytes | `number` | `null` | no |
| [signed\_ca\_cert](#input\_signed\_ca\_cert) | Signed ca certificate. It should be previously [generated following docs](https://docs.storj.io/node/dependencies/identity) | `string` | n/a | yes |
| [signed\_identity\_cert](#input\_signed\_identity\_cert) | Signed identity certificate. It should be previously [generated following docs](https://docs.storj.io/node/dependencies/identity) | `string` | n/a | yes |
| [ssh\_authorized\_key](#input\_ssh\_authorized\_key) | Authorized ssh key for core user | `string` | n/a | yes |
| [storage](#input\_storage) | Allocated disk space | `string` | n/a | yes |
| [timezone](#input\_timezone) | Timezone for VMs as listed by `timedatectl list-timezones` | `string` | `null` | no |
| [updates\_periodic\_window](#input\_updates\_periodic\_window) | Only reboot for updates during certain timeframes
{
days = ["Sat", "Sun"],
start\_time = "22:30",
length\_minutes = "60"
} |object({| `null` | no |
days = list(string)
start_time = string
length_minutes = string
})
| [vcpu](#input\_vcpu) | Node default vcpu count | `number` | `null` | no |
| [wait\_for\_lease](#input\_wait\_for\_lease) | Wait for network lease | `bool` | `null` | no |
| [wallet](#input\_wallet) | Operator's wallet | `string` | n/a | yes |## Outputs
No outputs.
## Requirements
| Name | Version |
|------|---------|
| [terraform](#requirement\_terraform) | >= 1.2.0 |
| [ct](#requirement\_ct) | 0.11.0 |
| [libvirt](#requirement\_libvirt) | ~> 0.7 |## Providers
| Name | Version |
|------|---------|
| [template](#provider\_template) | 2.2.0 |## Modules
| Name | Source | Version |
|------|--------|---------|
| [fcos](#module\_fcos) | krestomatio/fcos/libvirt | 0.0.24 |## Resources
| Name | Type |
|------|------|
| [template_file.butane_snippet_install_storj_node](https://registry.terraform.io/providers/hashicorp/template/latest/docs/data-sources/file) | data source |## Inputs
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [address](#input\_address) | Storj address/public ip | `string` | n/a | yes |
| [autostart](#input\_autostart) | Autostart with libvirt host | `bool` | `null` | no |
| [cidr\_ip\_address](#input\_cidr\_ip\_address) | CIDR IP Address. Ex: 192.168.1.101/24 | `string` | `null` | no |
| [cpu\_mode](#input\_cpu\_mode) | Libvirt default cpu mode for VMs | `string` | `null` | no |
| [data\_volume\_pool](#input\_data\_volume\_pool) | Node default data volume pool | `string` | `null` | no |
| [data\_volume\_size](#input\_data\_volume\_size) | Node default data volume size in bytes | `number` | `null` | no |
| [email](#input\_email) | Operator's email | `string` | n/a | yes |
| [etc\_hosts](#input\_etc\_hosts) | /etc/host list |list(| `null` | no |
object(
{
ip = string
hostname = string
fqdn = string
}
)
)
| [etc\_hosts\_extra](#input\_etc\_hosts\_extra) | /etc/host extra block | `string` | `null` | no |
| [extra\_parameters](#input\_extra\_parameters) | List of extra paramenters appending when running storagenode container | `list(string)` | `[]` | no |
| [fqdn](#input\_fqdn) | Node FQDN | `string` | n/a | yes |
| [identity\_key](#input\_identity\_key) | Identity key. It should be previously [generated following docs](https://docs.storj.io/node/dependencies/identity) | `string` | n/a | yes |
| [ignition\_pool](#input\_ignition\_pool) | Default ignition files pool | `string` | `null` | no |
| [image](#input\_image) | /etc/host list |object(|
{
name = optional(string, "docker.io/storjlabs/storagenode")
version = optional(string, "latest")
}
){| no |
"name": "docker.io/storjlabs/storagenode",
"version": "latest"
}
| [keymap](#input\_keymap) | Keymap | `string` | `null` | no |
| [log\_level](#input\_log\_level) | Operator's wallet | `string` | `null` | no |
| [log\_volume\_pool](#input\_log\_volume\_pool) | Node default log volume pool | `string` | `null` | no |
| [log\_volume\_size](#input\_log\_volume\_size) | Node default log volume size in bytes | `number` | `null` | no |
| [mac](#input\_mac) | Mac address | `string` | `null` | no |
| [memory](#input\_memory) | Node default memory in MiB | `number` | `512` | no |
| [nameservers](#input\_nameservers) | List of nameservers for VMs | `list(string)` |[| no |
"8.8.8.8"
]
| [network\_bridge](#input\_network\_bridge) | Libvirt default network bridge name for VMs | `string` | `null` | no |
| [network\_id](#input\_network\_id) | Libvirt default network id for VMs | `string` | `null` | no |
| [network\_name](#input\_network\_name) | Libvirt default network name for VMs | `string` | `null` | no |
| [periodic\_updates](#input\_periodic\_updates) | Only reboot for updates during certain timeframes
{
time\_zone = "localtime"
windows = [
{
days = ["Sat"],
start\_time = "23:30",
length\_minutes = "60"
},
{
days = ["Sun"],
start\_time = "00:30",
length\_minutes = "60"
}
]
} |object(| `null` | no |
{
time_zone = optional(string, "")
windows = list(
object(
{
days = list(string)
start_time = string
length_minutes = string
}
)
)
}
)
| [port](#input\_port) | Storj node port | `number` | `28967` | no |
| [rollout\_wariness](#input\_rollout\_wariness) | Wariness to update, 1.0 (very cautious) to 0.0 (very eager) | `string` | `null` | no |
| [root\_base\_volume\_name](#input\_root\_base\_volume\_name) | Node default base root volume name | `string` | n/a | yes |
| [root\_base\_volume\_pool](#input\_root\_base\_volume\_pool) | Node default base root volume pool | `string` | `null` | no |
| [root\_volume\_pool](#input\_root\_volume\_pool) | Node default root volume pool | `string` | `null` | no |
| [root\_volume\_size](#input\_root\_volume\_size) | Node default root volume size in bytes | `number` | `null` | no |
| [signed\_ca\_cert](#input\_signed\_ca\_cert) | Signed ca certificate. It should be previously [generated following docs](https://docs.storj.io/node/dependencies/identity) | `string` | n/a | yes |
| [signed\_identity\_cert](#input\_signed\_identity\_cert) | Signed identity certificate. It should be previously [generated following docs](https://docs.storj.io/node/dependencies/identity) | `string` | n/a | yes |
| [ssh\_authorized\_key](#input\_ssh\_authorized\_key) | Authorized ssh key for core user | `string` | n/a | yes |
| [storage](#input\_storage) | Allocated disk space | `string` | n/a | yes |
| [timezone](#input\_timezone) | Timezone for VMs as listed by `timedatectl list-timezones` | `string` | `null` | no |
| [vcpu](#input\_vcpu) | Node default vcpu count | `number` | `null` | no |
| [wait\_for\_lease](#input\_wait\_for\_lease) | Wait for network lease | `bool` | `null` | no |
| [wallet](#input\_wallet) | Operator's wallet | `string` | n/a | yes |## Outputs
No outputs.