Skip to content

Terraform module for creating a Maddy mail server using Fedora CoreOS, and Libvirt.

Notifications You must be signed in to change notification settings

krestomatio/terraform-libvirt-fcos-maddy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Terraform module for creating a Maddy mail server using Fedora CoreOS, and Libvirt.

Dependencies

The following are the dependencies to create the VM with this module:

Requirements

Name Version
terraform >= 1.2.0
ct 0.11.0
libvirt ~> 0.7

Providers

Name Version
template n/a

Modules

Name Source Version
butane_snippet_install_certbot krestomatio/butane-snippets/ct//modules/certbot 0.0.12
maddy krestomatio/fcos/libvirt 0.0.28

Resources

Name Type
template_file.butane_snippet_install_maddy data source

Inputs

Name Description Type Default Required
additional_rpms Additional rpms to install during boot using rpm-ostree, along with any pre or post command
object(
{
cmd_pre = optional(list(string), [])
list = optional(list(string), [])
cmd_post = optional(list(string), [])
}
)
{
"cmd_post": [],
"cmd_pre": [],
"list": []
}
no
autostart Autostart with libvirt host bool null no
backup_volume_pool Node default backup volume pool string null no
backup_volume_size Node default backup volume size in bytes number null no
butane_snippets_additional Additional butane snippets list(string) [] no
certbot Certbot config
object(
{
agree_tos = bool
staging = optional(bool)
email = string
http_01_port = optional(number)
}
)
null no
cidr_ip_address CIDR IP Address. Ex: 192.168.1.101/24 string null no
cpu_mode Libvirt default cpu mode for VMs string null no
cpus_limit Number of CPUs to limit the container number 0 no
data_volume_pool Node default data volume pool string null no
data_volume_size Node default data volume size in bytes number null no
etc_hosts /etc/host list
list(
object(
{
ip = string
hostname = string
fqdn = string
}
)
)
null no
etc_hosts_extra /etc/host extra block string null no
external_fqdn FQDN to access Maddy mail string n/a yes
fail2ban_ignoreip Fail2ban default ignoreip value string "127.0.0.1/8 ::1" no
fqdn Node FQDN string n/a yes
ignition_pool Default ignition files pool string null no
image Maddy mail container image
object(
{
name = optional(string, "docker.io/foxcpp/maddy")
version = optional(string, "latest")
}
)
{
"name": "docker.io/maddylabs/mail-server",
"version": "latest"
}
no
interface_name Network interface name string null no
keymap Keymap string null no
log_volume_pool Node default log volume pool string null no
log_volume_size Node default log volume size in bytes number null no
mac Mac address string null no
machine The machine type, you normally won't need to set this unless you are running on a platform that defaults to the wrong machine type for your template string null no
memory Node default memory in MiB number 512 no
memory_limit Amount of memory to limit the container string "" no
nameservers List of nameservers for VMs list(string) null no
network_bridge Libvirt default network bridge name for VMs string null no
network_id Libvirt default network id for VMs string null no
network_name Libvirt default network name for VMs string null no
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(
{
time_zone = optional(string, "")
windows = list(
object(
{
days = list(string)
start_time = string
length_minutes = string
}
)
)
}
)
null no
primary_domain Primary domain for Maddy mail string n/a yes
rollout_wariness Wariness to update, 1.0 (very cautious) to 0.0 (very eager) string null no
root_base_volume_name Node default base root volume name string n/a yes
root_base_volume_pool Node default base root volume pool string null no
root_volume_pool Node default root volume pool string null no
root_volume_size Node default root volume size in bytes number null no
ssh_authorized_key Authorized ssh key for core user string n/a yes
sync_time_with_host Sync guest time with the kvm host bool null no
timezone Timezone for VMs as listed by timedatectl list-timezones string null no
vcpu Node default vcpu count number null no
wait_for_lease Wait for network lease bool null no

Outputs

No outputs.

Krestomatio is a managed service for Moodle™ e-learning platforms. It allows you to have open-source instances managed by a service optimized for Moodle™, complete with an additional plugin pack and customization options.